Actions

Difference between revisions of "Boostcon 2011"

From Just in Time

Line 29: Line 29:
 
===Thinking Asynchronously===
 
===Thinking Asynchronously===
 
Wrong:
 
Wrong:
<code lang="cpp">
+
<pre lang="cpp">
 
if (socket.connected())
 
if (socket.connected())
 
{   
 
{   
 
     socket.write();
 
     socket.write();
 
}
 
}
</code>
+
</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();
}