作者cooper6334 (小恐龍)
看板C_and_CPP
標題Re: [問題] 有關VC上多執行緒的問題
時間Mon Nov 22 22:37:42 2010
: 補充說明:
: 補充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
推 slimbody15:c大 感謝你的回文 11/22 22:39
推 slimbody15:不過說道CriticalSection其他有semaphore mutex event 11/22 22:42
→ slimbody15:雖然書上有說差異 不過目前我也不是很有感覺甚麼時機 11/22 22:42
→ slimbody15:該用甚麼 11/22 22:42
→ purpose:那是MFC對EnterCriticalSection()與CRITICAL_SECTION包裝 11/22 22:47
→ purpose:>CRITICAL_SECTION的執行緒永遠不會處於「饑餓」的狀態。 11/22 22:48
→ purpose:>EnterCriticalSection的呼叫最後還是會逾時,並引發例外 11/22 22:48
推 purpose:剛初步查了一下,目的差不多,但是像 semaphore mutex 是 11/22 22:53
→ purpose:Kernel Object,功能比較強,但是要進入 Kernl 效率較差 11/22 22:53
推 slimbody15:p大謝謝阿 惠我良多~~!!! 11/22 23:46