Hi, Hi, I am Haoyue, a PhD student in geophysics at MIT. I used C++11 to write parallel finite element codes in my research and had some coursework on concurrent programming.
Boost is such a powerful and efficient library. I sincerely hope I could contribute to it this summer and beyond.
I am interested in the standalone GSoC Projects under Boost.Thread. Particularly, the Work-Stealing-Thread-Pool project is a great one that I expect to learn a lot from.
I understand that there could be much more to discuss once I have a preliminary proposal. Here I just want to ask if I am heading in the right direction.
I think a good point to start is chapter 6, 7, and 9 of the book C++ Concurrency in Action: Practical Multithreading and the Executors and Schedulers revision 3 from http://www.open-std.org/. Yes, this is a good starting point. I haven't used Executor before but I am ware of its existence in Java for a while. Maybe I could go through some Executor and fork/join Java examples to see how they are used in practice. I don't think this is a good idea. Why not start with the executors included in Boost.Thread library (develop/master branches) Finally, I will read and understand the executors codes on GitHub. The executors directory included already some executors. One of them the basic_thread_pool is a good starting point. The work-stealing
Le 06/03/14 04:06, Haoyue Wang a écrit : thread_pool could be based on it and the implementation provided in CCIA 9.1.5.
I hope I could put up a good first draft proposal next Monday. If there is any advice, please let me know.
I would need to know more about your background. Are you familiar with thread-safe lock based data-structures? lock-free data structures? Your first proposal should be as complete as possible and you will need to probe that you are knowledgeable of the problem domain, of Boost environment and of C++11. Showing a prototype of a thread pool having specific queue for each thread (See CCIA 9.1.4) that make use of the sync_queue in Boost.Thread would be really nice. Which compiler(s) are you using? Which platform(s)? Do you use already Boost? Best, Vicente