2009年8月13日 星期四

在 Windows 下如何使用 Dev-C++ 開發 pthread 多執行緒程式


寫這些都是,我在 C&C++程式設計實務實戰班(基礎+進階) 課程上課內容之相關資訊與課程LAB實作經驗(加強學習效果)的剪影:

 

1. 在DEV-C++執行的 pthread_cancel程式範例 與 【C&C++程式設計實務基礎班】上課實作(CODING)完成的全部範例( 67 個 LAB範例 ),網址如下:http://tw.myblog.yahoo.com/yh-chiang/article?mid=592&prev=609&next=578&l=a&fid=9

 

2. 測試您對 C&C++ 程式語言的熟悉程度,網址如下:http://tw.myblog.yahoo.com/yh-chiang/article?mid=642&next=638&l=a&fid=9

 


C&C++程式設計實務實戰班(基礎+進階)課程內容請參考:http://edu.tcfst.org.tw/query_coursedetail.asp?courseidori=98C088


 


本文開始:要在 Dev-C++ 上寫POSIX規範的 Thread多執行緒的程式,原始的Dev-C++並不支援,但可以自 http://sourceware.org/pthreads-win32/ 下載相關 pThread for Window 版本,再將其加入 Dev-C++,這樣你的 Dev-C++ 就可以寫 POSIX規範的 Thread多執行緒的程式了。我這裡用的 Bloodshed Dev-C++版本是 Version 4( 不是 Dev-C++ 5 (currently beta) 喔 ),其相關步驟如下:


Step1: 下載 pThread for Window 版本,我下載了 pthreads-w 32-2-8 -0-release.exe


Step2: 執行 pthreads-w 32-2-8 -0-release.exe,這是一個自解壓縮執行檔,出現如下之畫面:(ps:我是在D:\Dev-C++目錄下解壓此檔)




 


按下【Extract】解壓縮。待出現如下畫面:





 


按下【確定】。 再按下 Done】。


Step3: 執行 Dev-C++,選【Options】選項的【Compiler options】,如下圖:


 


 


,出現 [Compiler options] 畫面,如下圖:




 


Step4: [Compiler options] 中的 [C include files] 欄位內容,增加 D:\Dev-C++\Pre-built.2\include\;在[Compiler options] 中的 [Libraries directory] 欄位內容,增加 D:\Dev-C++\Pre-built.2\lib\


Step5: 最後在您的程式碼就可以使用 Thread 函數,如pthread_create等。同時你還需將 Thread lib庫加入此Project,方法如下: 點選Project】【Project options】,如下圖所示:




 


,將會出現如下之[Project options]畫面:



 



,接著請按下[Load object files],在D:\Dev-C++\Pre-built.2\lib\ 目錄下(如下之畫面)




 


選擇 libpthreadGC2.a。如下之畫面:



 


選擇 libpthreadGC2.a回到原畫面按下[OK]鈕即可。




 


接著依照C/C++程式規範,寫一Thread 程式,我這裡貼上在課堂中撰寫的CODE,再來就是編譯及執行囉,執行畫面如下所示:




 


執行結果,你會看到每隔一秒同時出現 [Th1  main  ],同時連續出現 20次。


 


上課時撰寫的程式碼如下:


#include stdio.h


#include stdlib.h


#include pthread.h


 


void * ThFun1(void *arg)


{  int x;


  printf( "%s\r\n", (char*)arg );


  for( x=1; x=20;x++)


  {


    printf( "TH1  " );    


    _sleep( 1000 );  


  }  


}


int main(int argc, char *argv[])


{ int x;


  pthread_t th1;


  printf( "Hello CYH\r\n" );


  pthread_create( &th1,NULL,ThFun1, (void *)"HiTCFST");


  // create a new thread for ThFun1 - main + ThFun1


  for( x=1; x=20;x++)


  {


    printf( "main  " );    


    _sleep( 1000 );  


  }


  system("PAUSE");    


  return 0;


}


沒有留言:

張貼留言

FPGA Verilog 的學習經驗,提供給要入門的新手

今天簡單說說 FPGA Verilog 的學習經驗,提供給要入門的新手: 1.對自己寫的FPGA Verilog程式,所生成的數位電路要心中有數。 這一點個人認為很重要,就正如寫 C語言,心中要能生成對應的組合語言一樣,我是這樣要求自己的。 雖然 FPGA Verilog語言...