1
我需要保護資源不被中斷,在這種情況下寫入套接字。我有一個類TelnetServer,它被多次實例化(每次使用一次連接)。QMutex - 保護線程內但不跨線程
我想防止寫入單個用戶被另一個寫入同一用戶(即鎖定互斥鎖寫入該同一個套接字)中斷。但是,當我寫入單個用戶時,我不想凍結所有寫入所有套接字的所有寫入。爲了澄清(僞C++):
Class TelnetThread {
QMutex mutex;
void writeToSocket() {
mutex.lock();
socket->write(string);
mutex.unlock();
}
}
所以,如果我有30 TelnetThread的運行,寫一個插座不應阻止同時寫入到另一個線程。但是,如果有幾個插槽觸發寫入同一個套接字/線程,那麼它們應該被序列化。
我應該在哪裏聲明我的互斥變量?如果我把它變成一個類(線程)變量,是不是將所有線程中的所有套接字寫入(這個類的所有實例)序列化?如果我使它成爲writeToSocket中的函數變量,那麼我認爲它不會將寫入操作串行化到相同的套接字。
幫助...我該怎麼做?
你應該在與套接字成員相同的範圍內降低你的互斥量。 –
如果你想每個插座互斥一個,每個插座配一個 –
我不明白。根據我的閱讀,如果我在類級別聲明一個套接字變量,並在類級別聲明一個互斥量,那麼(該類的)所有線程共享相同的互斥量,這不是我想要的。 – TSG