This talk will have two parts. The first part will revolve around the Piece Picking algorithm and how it evolved from a simplistic and inextensible initital implementation to its current highly extensible form as more complex behaviours were required.

The second part will be about the different strategies used to manage the multi-threaded workload. A typical bittorrent download will open about 100 connections so it is critical that the syncronisation strategy used to access any shared state does not prevent the sockets from sending/receiving data, otherwise performance will suffer.