Qt QMutex-在线程内保护,但不跨线程保护

Qt QMutex-在线程内保护,但不跨线程保护,qt,qtcore,qmutex,Qt,Qtcore,Qmutex,我需要保护资源不被中断,在本例中是写入套接字。我有一个类TelnetServer,它在每个使用的连接中被实例化多次 我希望防止对单个用户的写入被对同一用户的另一次写入中断,即锁定互斥锁以写入该套接字。但是,我不想在向单个用户写入时冻结对所有套接字的所有写入。要澄清伪c++,请执行以下操作: Class TelnetThread { QMutex mutex; void writeToSocket() { mutex.lock(); socket->writ

我需要保护资源不被中断,在本例中是写入套接字。我有一个类TelnetServer,它在每个使用的连接中被实例化多次

我希望防止对单个用户的写入被对同一用户的另一次写入中断,即锁定互斥锁以写入该套接字。但是,我不想在向单个用户写入时冻结对所有套接字的所有写入。要澄清伪c++,请执行以下操作:

Class TelnetThread {
  QMutex mutex;

  void writeToSocket() {
      mutex.lock();
      socket->write(string);
      mutex.unlock();
  }
}
所以,如果我运行了30个TelnetThread,那么写入一个套接字不应该阻止同时写入另一个线程。但是,如果两个插槽触发对同一套接字/线程的写入,那么它们应该被序列化

我应该在哪里声明互斥变量?如果我让它成为一个类线程变量,那么它不会序列化跨所有线程的所有套接字写操作以及该类的所有实例吗?如果我将它设置为writeToSocket中的函数变量,那么我认为它甚至不会序列化对同一套接字的写入

救命啊,我该怎么做

i、 e.锁定互斥锁以写入该套接字

您可以编写一个封装的套接字write locker类型,也可以在同一个单元内将互斥体与相应的套接字一起处理


正如我在以前的一个线程中所写的,我会考虑使用QutoExtLoCK来解决这些问题。它不太容易出错,并且使代码更短。

您应该在与套接字成员相同的范围内取消互斥。如果您希望每个套接字有一个互斥,请将每个套接字配对一个互斥。我不知道如何进行。根据我的阅读,如果我在类级别声明一个套接字变量,在类级别声明一个互斥体,那么该类的所有线程共享同一个互斥体,这不是我想要的。