Hi
Thanks for your explanation.
In Listener_srvr_ps.cpp, it starts a thread to do tcpip listener and handle
messages and tasks. I mean that could we simply separate network processing
from task processing instead of converting it to completely multi-threads .
Besides, does anyone know the role of the API AWAITIOX and related ones?
I could not search it on the Internet and I don't know what is the 'while
(m_bKeepRunning) ' mean?.
511
512
// Start tcpip listener thread
513
tcpip_tid = tcpip_listener_thr.create("TCPIP_listener",
514
CNSKListenerSrvr::tcpip_listener, this);
515
516
// Persistently wait for input on $RECEIVE and then act on it.
517
while(m_bKeepRunning)
518
{
519
RESET_ERRORS((long)0);
520
521
timeout = -1;
522
fnum = m_ReceiveFnum;
523
524
cc = AWAITIOX(&fnum, OMITREF, &countRead, &tag, timeout);
________________________________
发件人: Dave Birdsall <[email protected]>
发送时间: 2018年3月27日 23:26:03
收件人: [email protected]
主题: RE: Question about Trafodion MXOSRVR
Hi,
This is an accident of history. The predecessor product was developed on a
platform that did not support operator multi-threading.
Yes, it is certainly possible to rearchitect mxosrvr to make it multi-threaded.
This can be tricky and must be done carefully. One must take into account any
global variables the code uses and decide whether to leave them as globals (and
co-ordinate access with mutex), make them thread-globals, or refactor them into
some object that is not a global instead.
Dave
-----Original Message-----
From: Song, Hao-Lin <[email protected]>
Sent: Tuesday, March 27, 2018 8:20 AM
To: [email protected]
Subject: Question about Trafodion MXOSRVR
Hi all
I found that mxosrvr could not handle other network messages when a query is
processing , since network processing and data processing are in the same
thread. I am confused about this. Can we put them in different threads to make
the program more clear and potential?
Best,
Haolin