【发布时间】:2013-06-04 13:39:03
【问题描述】:
假设我们有 std::map 套接字映射,它是一个多线程应用程序。会有多个线程访问map中的socket发送socket数据,同时只有一个线程访问map中的socket接收数据,如果远端关闭,该线程也会删除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
};
【问题讨论】:
-
@Yvette 添加了一些伪代码
标签: c++ linux multithreading pthreads thread-synchronization