我想阻止所有其他線程執行,直到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)類來同步多個進程。 –