本人寫了一個windows系統下利用管道進行行程間通信的程式,其中有一步是通過
HANDLE hBusConn = (HANDLE)_beginthreadex(NULL, 0, m_BusConnThread, this, 0, NULL);
來實施不同行程之間有管道 連接操作。
但是測驗時發現有時候這個函式會卡住不回傳。執行緒函式m_BusConnThread也沒有開始運行。
m_BusConnThread的內容是 static unsigned int __stdcall m_BusConnThread(void *pPM) { return ((CBusPort *)pPM)->m_BusConn(); }
它是一個類中的成員函式,呼叫另外一個函式實施具體功能。
我在回圈測驗的時候,程式功能是正常的,但是跑著跑著就可能會出現HANDLE hBusConn = (HANDLE)_beginthreadex(NULL, 0, m_BusConnThread, this, 0, NULL);這一句不回傳的情況。
我查msdn上也沒有提到任何這個函式會卡住的資訊。
大家有誰也遇到類似問題了,能否幫助分析一下原因是什么。
uj5u.com熱心網友回復:
代碼貼上來看看,內容不少于10個字uj5u.com熱心網友回復:
應該和管道有關。代碼不夠,不足以分析uj5u.com熱心網友回復:
多執行緒不會阻塞的,你看看是不是你執行緒里面寫啥了uj5u.com熱心網友回復:
除錯運行,然后點中斷,看看究竟停在哪里uj5u.com熱心網友回復:
執行緒互鎖了。uj5u.com熱心網友回復:
《Windows核心編程》轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/120624.html
標籤:進程/線程/DLL
