全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1581
推到 Plurk!
推到 Facebook!

全域變數如何使用在執行緒中

答題得分者是:aftcast
chiunyu
一般會員


發表:2
回覆:3
積分:1
註冊:2012-07-05

發送簡訊給我
#1 引用回覆 回覆 發表時間:2012-07-17 14:33:12 IP:114.33.xxx.xxx 訂閱
請問各位前輩
在某xxx.h檔內喧告一個變數 int A;
以下範例無法讓按鍵變更 A 變數,並讓執行緒使用此A變數
void __fastcall TMyThread::Execute()//執行緒 function
{
while(1)
{
if (A == 1)
{
...
}
if(A == 2)
{
...
}
}
}
void __fastcall TForm1::Button1Click(TObject *Sender)
{
A = 1;
}
void __fastcall TForm1::Button2Click(TObject *Sender)
{
A = 2;
}
有何方式可讓執行緒與按鍵共用某變數,謝謝

aftcast
站務副站長


發表:81
回覆:1482
積分:1762
註冊:2002-11-21

發送簡訊給我
#2 引用回覆 回覆 發表時間:2012-07-18 11:30:00 IP:114.32.xxx.xxx 訂閱
int A;
應該宣告成
extern int A;

此外,有必要的話請至我的blog上看thread-safe的文章!


------



蕭沖
--All ideas are worthless unless implemented--

C++ Builder Delphi Taiwan G+ 社群
http://bit.ly/cbtaiwan
chiunyu
一般會員


發表:2
回覆:3
積分:1
註冊:2012-07-05

發送簡訊給我
#3 引用回覆 回覆 發表時間:2012-07-19 11:54:23 IP:114.33.xxx.xxx 訂閱
蕭沖大大的方式 試過
更改為 extern int A 的方式
於compile會出現錯誤,blog也參考過,目前想先試試全域變數於thread與bottom間共用的作法,能否再給與建議呢,謝謝
aftcast
站務副站長


發表:81
回覆:1482
積分:1762
註冊:2002-11-21

發送簡訊給我
#4 引用回覆 回覆 發表時間:2012-07-19 12:58:56 IP:114.32.xxx.xxx 訂閱
extern 的用法你可能不太了解。我舉個例子。

unit2.h宣告如下:
extern PACKAGE TForm2 *Form2;
extern int gTestVar; //注意放在這裡

unit2.cpp 定義如下:
TForm2 *Form2;
int gTestVar = 0; // 注意放在這裡


__fastcall TForm2::TForm2(TComponent* Owner)
: TForm(Owner)
{
gTestVar = 7;
}


另一個unit3上的cpp


#include "Unit3.h"
#include "Unit2.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm3 *Form3;
//---------------------------------------------------------------------------
__fastcall TForm3::TForm3(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm3::Button1Click(TObject *Sender)
{
gTestVar = 8;
ShowMessage(gTestVar);
}





===================引 用 chiunyu 文 章===================
蕭沖大大的方式 試過
更改為 extern int A 的方式
於compile會出現錯誤,blog也參考過,目前想先試試全域變數於thread與bottom間共用的作法,能否再給與建議呢,謝謝
------



蕭沖
--All ideas are worthless unless implemented--

C++ Builder Delphi Taiwan G+ 社群
http://bit.ly/cbtaiwan
chiunyu
一般會員


發表:2
回覆:3
積分:1
註冊:2012-07-05

發送簡訊給我
#5 引用回覆 回覆 發表時間:2012-07-19 13:19:28 IP:114.33.xxx.xxx 訂閱
蕭沖大大 謝謝你
又學到這種使用方式,試出來可行,再次謝謝
系統時間:2017-10-19 17:14:03
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!