我需要保护资源不被中断,在这种情况下写入套接字。我有一个类 TelnetServer,它被实例化了很多次(每个使用的连接一次)。
我想防止对单个用户的写入被另一个对同一用户的写入中断(即锁定互斥锁以写入该一个套接字)。但是,我不想在写入单个用户时冻结对所有套接字的所有写入。澄清(伪c ++):
Class TelnetThread {
QMutex mutex;
void writeToSocket() {
mutex.lock();
socket->write(string);
mutex.unlock();
}
}
因此,如果我有 30 个 TelnetThread 正在运行,写入一个套接字不应阻止同时写入另一个线程。但是,如果几个插槽触发写入同一个套接字/线程,那么它们应该被序列化。
我应该在哪里声明我的互斥变量?如果我将其设为类(线程)变量,那不会序列化所有线程(此类的所有实例)上的所有套接字写入吗?如果我将其设为 writeToSocket 中的函数变量,那么我认为它不会将写入序列化,甚至写入同一个套接字。
帮助...我该怎么做?