Commit 3583e83a authored by valenok's avatar valenok

Using volatile keyword in the context struct to prevent unwanted optimization....

Using volatile keyword in the context struct to prevent unwanted optimization. See http://code.google.com/p/mongoose/issues/detail?id=216
parent 08bf149d
...@@ -422,7 +422,7 @@ static const char *config_options[] = { ...@@ -422,7 +422,7 @@ static const char *config_options[] = {
#define ENTRIES_PER_CONFIG_OPTION 3 #define ENTRIES_PER_CONFIG_OPTION 3
struct mg_context { struct mg_context {
int stop_flag; // Should we stop event loop volatile int stop_flag; // Should we stop event loop
SSL_CTX *ssl_ctx; // SSL context SSL_CTX *ssl_ctx; // SSL context
char *config[NUM_OPTIONS]; // Mongoose configuration parameters char *config[NUM_OPTIONS]; // Mongoose configuration parameters
mg_callback_t user_callback; // User-defined callback function mg_callback_t user_callback; // User-defined callback function
...@@ -430,13 +430,13 @@ struct mg_context { ...@@ -430,13 +430,13 @@ struct mg_context {
struct socket *listening_sockets; struct socket *listening_sockets;
int num_threads; // Number of threads volatile int num_threads; // Number of threads
pthread_mutex_t mutex; // Protects (max|num)_threads pthread_mutex_t mutex; // Protects (max|num)_threads
pthread_cond_t cond; // Condvar for tracking workers terminations pthread_cond_t cond; // Condvar for tracking workers terminations
struct socket queue[20]; // Accepted sockets struct socket queue[20]; // Accepted sockets
int sq_head; // Head of the socket queue volatile int sq_head; // Head of the socket queue
int sq_tail; // Tail of the socket queue volatile int sq_tail; // Tail of the socket queue
pthread_cond_t sq_full; // Singaled when socket is produced pthread_cond_t sq_full; // Singaled when socket is produced
pthread_cond_t sq_empty; // Signaled when socket is consumed pthread_cond_t sq_empty; // Signaled when socket is consumed
}; };
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment