环境:Linux
语言:C
如果我有服务器和客户端进程 服务器使用套接字与客户端通信。
在服务器进程中,它有两个线程(线程1,线程2)。
(线程1和线程2共享相同的文件描述符以与客户端通信)。
在客户端进程中,它只是单线程。
我除了服务器:
Sub ReplywithNote2()
Set myNameSpace = Application.GetNamespace("MAPI")
Set myInbox = myNameSpace.GetDefaultFolder(olFolderInbox)
Set myDestFolder = GetFolder("\\PO_Queries\Inbox\Completed")
For i = Application.ActiveExplorer.Selection.Count To 1 Step -1
With Application.ActiveExplorer.Selection.Item(i)
If .Class = olMail Then
.Move myDestFolder
End If
End With
Next
End Sub
但多线程可能发生了上下文切换
服务器:
thread 1:
send message A.1 to client
recv message A.2 from client
thread 2:
send message B.1 to client
recv message B.2 from client
如何从客户端避免线程2 recv A.2? 我可以阻止上下文切换,直到线程1收回A.2消息?
答案 0 :(得分:0)
最简单的(不良做法,非最佳)方法是使用互斥锁阻止线程2发送消息B.1,直到收到A.2。
更好(更复杂的方法)是让一个线程接收响应并将消息分派给正确的线程,但是每个线程上需要一个消息循环来与调度程序进行通信。