Re: [問題] 有關VC上多執行緒的問題

看板C_and_CPP作者 (小恐龍)時間13年前 (2010/11/22 22:37), 編輯推噓5(506)
留言11則, 2人參與, 最新討論串2/2 (看更多)
: 補充說明: : 補充WorkerThreadFunction_1的定義 : /////////////////////////////////////////// : UINT CTest1117Dlg::WorkerThreadFunction_1(LPVOID pParam) : /////////////////////////////////////////// : { : CFile file; : CCriticalSection cs; : cs.Lock(); 我是不知道CCriticalSection的運作方式拉 也不知道擺在thread裡能不能鎖到別的thread(我覺得不行) : : file.Open(dpath,CFile::modeCreate|CFile::modeNoTruncate|CFile::modeReadWrite); : : CString strValue ; : : for(int i=1;i<100;i++) : { : file.SeekToEnd(); //將指標移至文件末尾進行追加 問題是在這邊阿,要是你有鎖住,那就是輪流寫進文件裡 那當然會是一堆12345 要是你改成說重新寫一份 那文件最後的內容,就是最後寫的thread所寫的內容 也就會只有一組patern了 : strValue="1"; : file.Write(strValue,strValue.GetLength()); : } : //關閉文件 : file.Close(); : cs.Unlock(); : return 0; : } : : 懇請版上朋友不吝指教小弟錯誤的地方 謝謝 : : -- -- 我的夢想是,在希恰版上實況我自己做的遊戲 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 111.252.74.111

11/22 22:39, , 1F
c大 感謝你的回文
11/22 22:39, 1F

11/22 22:42, , 2F
不過說道CriticalSection其他有semaphore mutex event
11/22 22:42, 2F

11/22 22:42, , 3F
雖然書上有說差異 不過目前我也不是很有感覺甚麼時機
11/22 22:42, 3F

11/22 22:42, , 4F
該用甚麼
11/22 22:42, 4F

11/22 22:47, , 6F
那是MFC對EnterCriticalSection()與CRITICAL_SECTION包裝
11/22 22:47, 6F

11/22 22:48, , 7F
>CRITICAL_SECTION的執行緒永遠不會處於「饑餓」的狀態。
11/22 22:48, 7F

11/22 22:48, , 8F
>EnterCriticalSection的呼叫最後還是會逾時,並引發例外
11/22 22:48, 8F

11/22 22:53, , 9F
剛初步查了一下,目的差不多,但是像 semaphore mutex 是
11/22 22:53, 9F

11/22 22:53, , 10F
Kernel Object,功能比較強,但是要進入 Kernl 效率較差
11/22 22:53, 10F

11/22 23:46, , 11F
p大謝謝阿 惠我良多~~!!!
11/22 23:46, 11F
文章代碼(AID): #1Cwe0wFc (C_and_CPP)
文章代碼(AID): #1Cwe0wFc (C_and_CPP)