
2) Can we use contexts like condition variables? Can we make something like this: struct task{ // Implementanion }; std::deque<task> g_tasks; continuation g_cont; boost::thread::mutex g_mutex; // Executes ready tasks void thread_1() { // This function will be run in thread #1 while(1) { scoped_lock lock(g_mutex); if (g_tasks.empty()) { lock.unlock(); g_cont.suspend(); } else { auto t = g_tasks.front(); g_tasks.pop_front(); lock.unlock(); t.run(); } } } // Generate tasks void threads_2_n() { // This function will be run in threads #2, #3 ... while(1) { // Generating task t task t; t.generate(); scoped_lock lock(g_mutex); g_tasks.push_back(t); lock.unlock(); g_cont.resume(); } } Will there be some performance gains, because there is no more system calls for condition variables? If answer is yes for 2), then it is a killer feature and I will vote YES and write a more detailed review. P.S.: Sorry for two mails, instead of one. Best regards, Antony Polukhin