日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

GCC + pthread

發(fā)布時(shí)間:2023/12/2 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 GCC + pthread 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

多線程介紹
?
POSIX 1003.1-2001 定義了多線程編程的標(biāo)準(zhǔn)API。這個(gè)API就是廣為人知的pthreads。它的目的在于為跨平臺(tái)編寫多線程程序提供便利。
??
本文介紹了Linux 和 WIN32 平臺(tái)下的多線程程序的編寫方法
?==================================================================================================
Linux 系統(tǒng)對 pthreads 提供了良好的支持。一般地安裝完Linux系統(tǒng)后在/usr/include目錄下包含了 pthreads 的頭文件。在 /usr/lib 下面包含了pthread 的庫文件:libpthread.a 和 libpthread.so。其中l(wèi)ibpthread.a 為靜態(tài)鏈接庫,libpthread.so為動(dòng)態(tài)連接庫。
?在linux下編譯時(shí)需要增加 -lpthread


==================================================================================================
WIN32 threads 線程庫并不直接支持 pthreads,因此網(wǎng)絡(luò)上出現(xiàn)了POSIX Threads for Win32 的開源項(xiàng)目,為 WIN32 下開發(fā) Pthreads 多線程程序提供了方便。


Pthreads for win32 的下載地址為:


1 ftp://sourceware.org/pub/pthreads-win32 ;


2 http://dl.dbank.com/c0ba0nemwz ;


最新版本為 2-8-10。下載pthreads-w32-2-8-0-release.exe 后運(yùn)行解壓出三個(gè)目錄:pre-build.2 ?/ ?pthreads.2 ? / ? QueueUserAPCEx。Pthreads.2 里面包含了pthreads 的源代碼,可以利用該源代碼編譯出pthread的靜態(tài)庫,本文暫不討論。


我們主要關(guān)心pre-build.2 這個(gè)目錄。Pre-build.2 里面包含了include和 lib 分別包含了pthreads for win32 的頭文件和庫文件(包括靜態(tài)庫和動(dòng)態(tài)連接庫)。


對于采用MinGW編譯器,需要把 pre-build.2/lib/libpthreadGCE2.a 復(fù)制到MinGW下的lib目錄中,同時(shí)還需要把 pre-build.2/include/pthread.h ,pre-build.2/include/sched.h ,pre-build.2/include/semaphore.h 頭文件復(fù)制到MinGW下的include目錄中。然后編譯程序,但是最終發(fā)布程序時(shí)需要附帶上 pre-build.2/lib/pthreadGC2.dll 動(dòng)態(tài)連接庫。


?MinGW下載地址:http://dl.dbank.com/c0nwzab00y


下面是Eclipse3.7 + GCC4.6.1下的測試程序:



[cpp] view plaincopy
  • #include?<pthread.h>??
  • #include?<stdio.h>??
  • ??
  • ??
  • void*?thread_one(void*?dummy)??
  • {??
  • ?while(1)??
  • ?{??
  • ??printf("Hello,world.this?is?thread?one\n");??
  • ?}??
  • }??
  • ??
  • ??
  • void*?thread_two(void*?dummy)??
  • {??
  • ?while(1)??
  • ?{??
  • ??printf("Hello,world.this?is?thread?two\n");??
  • ?}??
  • }??
  • ??
  • ??
  • int?main(void)??
  • {??
  • ?pthread_t?tid[2];??
  • ?pthread_create(&tid[0],NULL,thread_one,NULL);??
  • ?pthread_create(&tid[1],NULL,thread_two,NULL);??
  • ?pthread_exit(NULL);??
  • }??



  • ?


    在Eclipse下編譯該程序時(shí),需要添加 libpthreadGCE2.a 庫來編譯。

    總結(jié)

    以上是生活随笔為你收集整理的GCC + pthread的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。