線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1354
推到 Plurk!
推到 Facebook!

如何在多執行緒中安全的使用 C 標準函數

尚未結案
jackyung
一般會員


發表:22
回覆:46
積分:13
註冊:2004-01-24

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-07-13 15:15:18 IP:218.171.xxx.xxx 未訂閱
我從書上得知要使用 C 標準函數須改用 LIBCMT 這個 C 的 Run-Time 程式庫,和改用 _beginthread() 來取代 CreateThread() ...等等,但那是 VC 的做法,若用 BCB 要怎麼做?
hobolin
初階會員


發表:0
回覆:25
積分:25
註冊:2005-07-03

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-07-13 15:37:17 IP:202.145.xxx.xxx 未訂閱
不是很懂你所指的「安全」是什麼? 你想用什麼函數來做什麼事? BCB 有一個東西叫 TCriticalSection 可以必免執行緒同時 access 一個 block // declare TRTLCriticalSection CriticalSection1; // initial InitializeCriticalSection(&CriticalSection1); void __fastcall FunctionA() { EnterCriticalSection(&CriticalSection1); // 你的程式放這裡 LeaveCriticalSection(&CriticalSection1); } // end DeleteCriticalSection(&CriticalSection1);
jackyung
一般會員


發表:22
回覆:46
積分:13
註冊:2004-01-24

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-07-13 18:29:12 IP:218.171.xxx.xxx 未訂閱
標準函數是指像 printf、strcpy ...等,已有很久時間,已是標準,可在各平台上使用,但好像只是為單執行緒寫的,無法在多執行緒上使用,若要在多執行緒上使用應有其辦法才對,不知要怎麼做 另外我發現 _beginthread() 在 BCB 怎麼和 VC 不太一樣,昏倒... 有沒有一緻的標準
hobolin
初階會員


發表:0
回覆:25
積分:25
註冊:2005-07-03

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-07-13 23:31:08 IP:218.174.xxx.xxx 未訂閱
那上一篇我回答的內容應該就可以達到你的要求
jackyung
一般會員


發表:22
回覆:46
積分:13
註冊:2004-01-24

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-07-15 13:45:11 IP:218.171.xxx.xxx 未訂閱
EnterCriticalSection 只能控制自己的程式,不能管到標準函數庫,應使用有支援多執行緒功能的標準函數庫 我大致在 BCB 試了一下,沒出現問題,可能 BCB 的標準函數庫已是多執行緒版,還是自動掛上適用的函數庫,還是我的測試不夠完整 BCB 使用上是很方便,可是常搞不清楚它在做什麼,反而讓人不放心
系統時間:2024-05-18 4:35:40
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!