std::map ソケット マップがあり、それがマルチスレッド アプリケーションであるとします。ソケット データを送信するためにマップ内のソケットにアクセスするスレッドは複数ありますが、データを受信するためにマップ内のソケットにアクセスするスレッドは 1 つだけであり、このスレッドはリモート エンドが閉じると SocketInfo* も削除します。
上記の状況で、読み取り/書き込みロック (pthread_rwlock_t) を使用してスレッドを同期できますか? はいの場合、pthread_mutex_t よりも多くの利点がありますか?
スティーブ
[疑似コード]
class CSocketIO {
std::map<int, SocketInfo*> m_Sockets; //socket value and socket info
pthread_t m_ReadingSocketThreads; // for reading socket data
};
class CSession {
void SendOutNetworkPackets(); //access sockets for sending sock data
pthread_t m_WorkerThread; // do jobs and send sock data
};
class CSomeClass {
void SendOutNetworkPackets(); // also access sockets
pthread_t m_WorkerThread; // do jobs and send sock data
};