[Interest] Is QLocalSocket reentrant?
Calogero Mauceri
mauceri at actgate.com
Fri May 22 14:35:05 CEST 2015
Hi all,
sorry if this is a stupid question, but I'm having some weird memory
corruption problems when using QLocalSocket in multiple threads.
I have a server process, accepting connections from client processes
through a QLocalServer instance. Every time a new connection is accepted
by the QLocalServer, the server launches a thread that communicates with
the client through the QLocalSocket.
The code I'm using to launch the threads in the server is something like
this
void LocalServer::newClientConnectionSlot()
{
QLocalSocket *localSocket = localServer->nextPendingConnection();
if (localSocket) {
QThread *thread= new QThread;
MyWorker *worker = new MyWorker();
worker ->moveToThread(thread);
thread->start();
localSocket->setParent(NULL); // remove local server parent
in order to properly use the socket on another thread
localSocket->moveToThread(thread);
rpcPingReplyer->setLocalSocket(localSocket);
rpcPingReplyer->startPingReplying();
}
}
Each thread is using its own localSocket to communicate with the client.
My question is, is it safe to use different instances of QLocalSocket
from different threads without guarding those sockets? The documentation
does not report QLocalSocket is reentrant. What does it imply? Should I
guard all QLocalSocket instances with a global mutex before using them?
Thanks in advance for your hints!
Calogero
--
Calogero Mauceri
Software Engineer
Applied Coherent Technology Corporation (ACT)
www.actgate.com
More information about the Interest
mailing list