Difference between revisions of "Boostcon 2011"
From Just in Time
Line 29: | Line 29: | ||
===Thinking Asynchronously=== | ===Thinking Asynchronously=== | ||
Wrong: | Wrong: | ||
− | < | + | <pre lang="cpp"> |
if (socket.connected()) | if (socket.connected()) | ||
{ | { | ||
socket.write(); | socket.write(); | ||
} | } | ||
− | </ | + | </pre> |
Revision as of 16:04, 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();
}