C #~ Use of asynchronous programming in projects,
Gossip
If you are not familiar with asynchronous programming, read my article <C #~ Asynchronous programming> today, I will talk about how to use asynchronous programming in projects! During WEB development, asynchronous processing is not used much. However, when your project is of a certain scale, it can be used with other sites (APIS) and other settings (mobile phones and tablets) communication between them increases. In this case, in order to improve the response capability of the UI (browser, mobile terminal, tablet terminal, winform terminal), we need to introduce Asynchronization.
Project uses it
Our project is a live video function project. The live content is stored in a third party. They provide us with related interfaces and web Services (soap, which is currently popular with RestFul ), after the live broadcast is completed on the instructor end, we need to disable it and the third party will notify us that after we receive the pass, we can change the status of the course to "complete". Here, we need to use the course recording function. The course recording is performed by a third party only after the instructor finishes broadcasting the video. Therefore, when the Third Party notifies us that the course recording is complete, the video of the course has not been written on a third-party server. Therefore, we need to let the program sleep before obtaining the job. In this case, we will use the asynchronous and thread knowledge.
Code in the project
I encapsulated a method for calling WEB services by time period. The following code
/// <Summary> /// thread rotation service /// </summary> /// <param name = "ws"> code block for rotation </param> // /<param name = "interval"> interval seconds </param> // <returns> </returns> private string ThreadPoolService (Func <string> ws, action <string> logger, params int [] interval) {string url = ws (); foreach (int I in interval) {Thread. sleep (I * 1000); url = ws (); if (! String. isNullOrWhiteSpace (url) {logger (string. format ("On-demand training call time: {0} seconds, occurrence time: {1} seconds", I, DateTime. now); break;} return url ;}
The rest of the work is to call it. This content is related to specific projects and will not be disclosed here, haha.
C language rand () function
Rand and srand usage
First, we need to have a general opinion on rand & srand: srand initializes random seeds, and rand generates random numbers. The following describes in detail.
Rand (Random Number Generation)
Header file: # include <stdlib. h>
Define function: int rand (void)
Function Description:
Because the internal implementation of rand is made by the linear same remainder method, it is not a real random number, but because its cycle is very long, so it can be considered as random within a certain range, rand () returns a random value ranging from 0 to RAND_MAX. Before calling this function to generate a random number, you must use srand () to set the random number seed. If no random number seed is set, rand () will automatically set the random number seed to 1. Rand () generates false random numbers, which are the same during each execution. To be different, initialize it with different values. The initialized function is srand ().
Return Value:
Returns a random integer between 0 and RAND_MAX. The range of RAND_MAX is at least 32767 (int), that is, double byte (16 digits ). If unsigned int is used, the dual-byte value is 65535, and the four-byte value is an integer range of 4294967295.
0 ~ RAND_MAX the probability of each number being selected is the same.
Example:
/* Generate a random value ranging from 1 to 10. In this example, no random seed is set. For the complete random number generation, see
Srand ()*/
# Include <stdlib. h>
Main ()
{
Int I, j;
For (I = 0; I <10; I ++)
{
J = 1 + (int) (10.0 * rand ()/(RAND_MAX + 1.0 ));
Printf ("% d", j );
}
}
Run:
9 4 8 8 10 2 4 8 3 6
9 4 8 8 10 2 4 8 3 6 // re-execution still produces the same random number
Srand (set Random Seed)
Header file: # include <stdlib. h>
Define the function: void srand (unsigned int seed );
Function Description:
Srand () is used to set the random number seed when rand () generates a random number. The seed parameter must be an integer. Generally, the return value of geypid () or time (0) can be used as seed. If the same value is set for each seed, the random values generated by rand () are the same each time.
Example
/* Generate a random number ranging from 1 to 10. This example and execution result can be referenced with rand */
# Include <time. h>
# Include <stdlib. h>
Main ()
{
Int I, j;
Srand (int) time (0 ));
For (I = 0; I <10; I ++)
{
J = 1 + (int) (10.0 * rand ()/(RAND_MAX + 1.0 ));
Printf ("% d", j );
}
}
Execution: Compare with the rand example
5 8 8 8 10 2 10 8 9 9
2 9 7 4 10 3 2 10 8 7
Or:
Use "int x = rand () % 100;" to generate a random number between 0 and 100. This method is not or can be used. A better method is j = (int) (n * rand ()/(RAND_MAX + 1.0) generates a random number between 0 and n.
Int main (void)
{
Int I;
Time_t t;
Srand (unsigned) time (& t ));
Printf ("Ten r... the remaining full text>
C language rand () function
Rand and srand usage
First, we need to have a general opinion on rand & srand: srand initializes random seeds, and rand generates random numbers. The following describes in detail.
Rand (Random Number Generation)
Header file: # include <stdlib. h>
Define function: int rand (void)
Function Description:
Because the internal implementation of rand is made by the linear same remainder method, it is not a real random number, but because its cycle is very long, so it can be considered as random within a certain range, rand () returns a random value ranging from 0 to RAND_MAX. Before calling this function to generate a random number, you must use srand () to set the random number seed. If no random number seed is set, rand () will automatically set the random number seed to 1. Rand () generates false random numbers, which are the same during each execution. To be different, initialize it with different values. The initialized function is srand ().
Return Value:
Returns a random integer between 0 and RAND_MAX. The range of RAND_MAX is at least 32767 (int), that is, double byte (16 digits ). If unsigned int is used, the dual-byte value is 65535, and the four-byte value is an integer range of 4294967295.
0 ~ RAND_MAX the probability of each number being selected is the same.
Example:
/* Generate a random value ranging from 1 to 10. In this example, no random seed is set. For the complete random number generation, see
Srand ()*/
# Include <stdlib. h>
Main ()
{
Int I, j;
For (I = 0; I <10; I ++)
{
J = 1 + (int) (10.0 * rand ()/(RAND_MAX + 1.0 ));
Printf ("% d", j );
}
}
Run:
9 4 8 8 10 2 4 8 3 6
9 4 8 8 10 2 4 8 3 6 // re-execution still produces the same random number
Srand (set Random Seed)
Header file: # include <stdlib. h>
Define the function: void srand (unsigned int seed );
Function Description:
Srand () is used to set the random number seed when rand () generates a random number. The seed parameter must be an integer. Generally, the return value of geypid () or time (0) can be used as seed. If the same value is set for each seed, the random values generated by rand () are the same each time.
Example
/* Generate a random number ranging from 1 to 10. This example and execution result can be referenced with rand */
# Include <time. h>
# Include <stdlib. h>
Main ()
{
Int I, j;
Srand (int) time (0 ));
For (I = 0; I <10; I ++)
{
J = 1 + (int) (10.0 * rand ()/(RAND_MAX + 1.0 ));
Printf ("% d", j );
}
}
Execution: Compare with the rand example
5 8 8 8 10 2 10 8 9 9
2 9 7 4 10 3 2 10 8 7
Or:
Use "int x = rand () % 100;" to generate a random number between 0 and 100. This method is not or can be used. A better method is j = (int) (n * rand ()/(RAND_MAX + 1.0) generates a random number between 0 and n.
Int main (void)
{
Int I;
Time_t t;
Srand (unsigned) time (& t ));
Printf ("Ten r... the remaining full text>