前言 :
最近遇到一些跨平台的程序,本想自己封裝windows下的CreateThread和linux下的pthread,後來發現Linux社區早就提供了windows下的pthread庫,和linux下一模一樣 :
windows下的pthread庫叫做:pthreads-win32,官方網站是:http://sourceware.org/pthreads-win32/,官方FTP是:
ftp://sources.redhat.com/pub/pthreads-win32/。
考慮FTP裡面的內容比較亂,部分已經編譯的庫有問題。我下載了一個看起來比較新的庫,結果弄了半天不能鏈接。建議大家下載:
ftp://sources.redhat.com/pub/pthreads-win32/pthreads-w32-2-7-0-release.exe 這個自解壓文件,壓縮包裡的pthreads.2目錄是源碼,Pre-built.2目錄是編譯所需的頭文件和庫文件。
範例程式 :
* thread_sample.h 代碼 :
* thread_sample.cpp 代碼 :
執行結果 :
補充說明 :
* Linux Tutorial : POSIX thread coding
* POSIX Threads Programming
* 「多工」(Multitasking)與「多緒」(Multi-thread) 有何差別?
* [C++ 常見問題] 線程的同步 (synchronized)
最近遇到一些跨平台的程序,本想自己封裝windows下的CreateThread和linux下的pthread,後來發現Linux社區早就提供了windows下的pthread庫,和linux下一模一樣 :
windows下的pthread庫叫做:pthreads-win32,官方網站是:http://sourceware.org/pthreads-win32/,官方FTP是:
ftp://sources.redhat.com/pub/pthreads-win32/。
考慮FTP裡面的內容比較亂,部分已經編譯的庫有問題。我下載了一個看起來比較新的庫,結果弄了半天不能鏈接。建議大家下載:
ftp://sources.redhat.com/pub/pthreads-win32/pthreads-w32-2-7-0-release.exe 這個自解壓文件,壓縮包裡的pthreads.2目錄是源碼,Pre-built.2目錄是編譯所需的頭文件和庫文件。
範例程式 :
* thread_sample.h 代碼 :
- #include
- #include
- #include
- void threadSampleTest1(bool b) ;
* thread_sample.cpp 代碼 :
- #include "thread_sample.h"
- void* print_message_function( void *ptr );
- void threadSampleTest1(bool b) {
- if(b){
- //
- pthread_t thread1, thread2;
- char* message1 = "Thread1";
- char* message2 = "Thread2";
- void* (*pmf)(void *ptr);
- pmf = print_message_function;
- int iret1 = pthread_create(&thread1, NULL, pmf, message1);
- int iret2 = pthread_create(&thread2, NULL, pmf, message2);
- pthread_join(thread1, NULL);
- pthread_join(thread2, NULL);
- printf("Thread1 return %d\n",iret1);
- printf("Thread2 return %d\n",iret2);
- }
- }
- void* print_message_function( void *ptr ){
- char *message;
- message = (char *) ptr;
- printf("Print Message: %s \n", message);
- return NULL;
- }
執行結果 :
補充說明 :
* Linux Tutorial : POSIX thread coding
* POSIX Threads Programming
* 「多工」(Multitasking)與「多緒」(Multi-thread) 有何差別?
* [C++ 常見問題] 線程的同步 (synchronized)
沒有留言:
張貼留言