hier die lösung zu problem 1:
boost::thread t(&classenname::methode, &objekt);
und so übergibt man funktionen falls es jemand interessiert:
boost::thread t(boost::bind( &classname::methode, &objekt, parameter ));
wer auf problem 2 näher eingehen will darf das =P
edit:
was mich bei 2) beschäftigt ist... wird das überhaupt so gehandhabt? und wenn ja, wie würde das aussehen da es dann ja für jede connection 1 socket geben muss d.h. man müsste immer soviel threads wie connections haben. mir ist gerade unklar wie man das machen könnte, weil ein array hätte auch ne fixe anzahl oder gibt es möglichkeiten arrays "mitwachsen" zu lassen so dass bei jeder neuen verbindung ein thread-element dazu kommt?