Difference between revisions of "Boostcon 2011"
From Just in Time
Line 35: | Line 35: | ||
} | } | ||
</pre> | </pre> | ||
+ | ===Threading=== | ||
+ | * First: single threaded | ||
+ | * Use other thread to handle long running task. Uset ''post'' to give the result back to the main thread. |
Revision as of 16:10, 16 May 2011
This page will contain my notes taken during Boostcon 2011
Library in a Week
Review tools
- Code Collaborator
- Crucible (Crubicle?)
Boost.Asio
Chris Kohlhoff
fundamental concepts that went into the library. Use them in your programs.
One key criterium: should not be a framework, but a toolkit. This gives you more freedom.
- io_service
- "your channel into the operationg system"
Challenges of asynchronous programming:
- Object lifetimes
- Thinking asynchronously
- Threads
- ?
Object lifetimes
handlers and buffers are taken by value, a copy is made. Buffers are shallow.
Arguments taken by non-const reference: caller needs to guarantee lifetime. this-pointer should outlive operation. Newby problem: providing a buffer that goes out of scope (local variable for instance).
Use shared_ptr and shared_from_this to automatically manage object lifetime.
Thinking Asynchronously
Wrong:
if (socket.connected())
{
socket.write();
}
Threading
- First: single threaded
- Use other thread to handle long running task. Uset post to give the result back to the main thread.