我想阻止所有其他线程执行,直到SendReceive(Socket, strXmlFormat)
函数完成其执行,因为它用于通过套接字发送数据并手动关闭连接。按照数据发送到服务器时的要求,只有通过向服务器发送标志手动关闭连接,才能将其他数据发送到服务器。所以我想要的是所有正在运行该进程的其他线程都应该停止,直到该代码块完成执行。在当前线程正在执行时阻止执行语句块的其他线程
process(int start, int end)
{
// Block other threads from executing while the current thread executes this code block
Socket = Connect(strSMSIP, strSMSPort);
SendReceive(Socket, strXmlFormat);
// undo blocking the threads
}
这是怎样的线程创建的过程中被分配给它:
for (int i = 0; i < 5; i++)
{
int start = i+10
int end=start+10;
new Thread(delegate()
{
Process(start, end);
}).Start();
}
'每当数据被发送到服务器的要求,没有其他的数据必须被发送给它until',这将是很难在多个客户机的存在来实现的,甚至可能是在多个分布式机器。一个简单的'锁'或者甚至整个机器'Mutex'都无济于事。如果有的话,您最好在服务器上强制执行此要求。 –
@ Christian.K这个过程只能在一台机器上运行。 –
好的,那么如果这个过程只有一个单一的实例,比看看@Jakub Lortz的答案。否则,请查看['Mutex'](https://msdn.microsoft.com/library/system.threading.mutex(v = vs.110).aspx)类来同步多个进程。 –