Windows下使用pthread-開發環境搭建 (qq.com)
一.Windows下使用pthread-開發環境搭建
1.1 下載源碼
1.https://sourceforge.net/projects/pthreads4w/files/ 比官網新一點2018年 3.0版本
2.https://sourceware.org/pthreads-win32/ 官網 最新2012年 2.9.1版本
ftp://sourceware.org/pub/pthreads-win32/ 源碼下載
https://sourceware.org/pthreads-win32/manual/index.html API參考
3.https://github.com/GerHobbelt/pthread-win32 適配了MSVC的版本
1.2 庫編譯
使用上述第3個資源,因為MSVC編譯環境都適配好了。
這里使用MSVC2022
打開pthread-win32\\windows\\VS2022\\pthread.2022.sln,
有三個工程分別是,生成動態鏈接庫dll,靜態鏈接庫lib和測試的工程。
點擊左側目錄,解決方案’pthread.2022’
菜單欄點擊 生成->生成解決方案 開始構建
生成的dll和lib位于pthread-win32\\windows\\VS2022\\bin\\Debug-Unicode-64bit-x64下
其中
動態鏈接庫使用
pthread.dll
pthread.dll
靜態鏈接庫使用
pthread_static_lib.lib
1.3 測試
在解決方案目錄,右鍵點擊屬性
修改啟動項目
然后點擊如下圖標運行
pthread-win32\\tests\\wrapper4tests_1.c中測試用例
TEST_WRAPPER(test_sequence2);會失敗
先注釋掉該用例。
看到測試結果如下:
1.4 在自己工程中使用
1.4.1 使用靜態鏈接庫
新建空白WIN32程序
將上述的
pthread.dll
pthread.lib
pthread_static_lib.lib
復制到工程目錄Src/pthread/lib下
將源碼pthread-win32下的所有.h文件復制到
復制到工程目錄Src/pthread/inc下
右鍵點擊工程名->屬性
設置Lib文件夾路徑
$(MSBuildProjectDirectory)\\Src\\pthread\\lib;
設置lib文件
設置頭文件包含路徑$(MSBuildProjectDirectory)\\Src\\pthread\\inc;
添加源文件main.c,內容如下
創建兩個線程,分別延時不同時間。
#include < stdio.h >
#include < pthread.h >
static void* thread1(void* arg)
{
const struct timespec interval = { 1L, 500000000L };
while (1)
{
pthread_delay_np(&interval);
printf("thread1\\r\\n");
}
return 0;
}
static void* thread2(void* arg)
{
const struct timespec interval = { 3L, 0L };
while (1)
{
pthread_delay_np(&interval);
printf("thread2\\r\\n");
}
return 0;
}
int main(void)
{
pthread_t t1;
pthread_t t2;
pthread_create(&t1, NULL, thread1, NULL);
pthread_create(&t2, NULL, thread2, NULL);
while (1);
}
構建項目,然后運行
可以看到基本是thread1運行兩次thread運行1次,和其delay時間是兩倍關系對應。
使用靜態鏈接庫編譯的話exe文件可直接運行。
1.4.2 使用動態鏈接庫
與靜態鏈接時一樣
只是配置鏈接的庫文件是pthread.lib
運行時需要將exe文件和pthread.dll放在一起。
審核編輯:湯梓紅
-
嵌入式
+關注
關注
5082文章
19104瀏覽量
304798 -
WINDOWS
+關注
關注
3文章
3541瀏覽量
88622 -
開發環境
+關注
關注
1文章
225瀏覽量
16609 -
環境搭建
+關注
關注
0文章
53瀏覽量
9051
發布評論請先 登錄
相關推薦
評論