说明
在VS里用MS编译器不能直接调用pthread库,需要先自行下载该库:
http://sourceware.org/pub/pthreads-win32/pthreads-w32-2-9-1-release.zip
解压后用的到的只有Pre-built.2
文件夹下的文件。
配置
如下图分别配置三大项:
- 包含目录-->...pthreads-w32-2-9-1-releasePre-built.2include
- 库目录-->...pthreads-w32-2-9-1-releasePre-built.2libx86
- 附加依赖项-->pthreadVC2.lib
- 如果代码运行报错:“timespec”;”struct”类型重定义。
解决方法:在pthread.h在第35行加入如下代码:
#define HAVE_STRUCT_TIMESPEC
或者在项目属性->CC++->预处理器->预处理器定义添加HAVE_STRUCT_TIMESPEC
。
- 如果代码运行报错:找不到pthreadVC2.dll。
解决方法:将pthreadVC2.dll拷贝到项目的Debug目录下
示例代码
#include <stdio.h>
#include <stdlib.h>
#include <Windows.h>
#include <pthread.h> //使用多线程时需要添加<pthread.h>这个头文件
int s = 0;
void* transmit(void* args) {
char* name = (char*)args;
for (int i = 0; i < 1000; i++) {
s++;
printf("----------%s : s = %d----------\n", name, s);
Sleep(1000);
}
}
void* receive(void* args) {
char* name = (char*)args;
while (1)
{
printf("%s : s = %d\n", name, s);
Sleep(100);
}
}
int main() {
pthread_t tx, rx;
pthread_create(&tx, NULL, transmit, "TX");
pthread_create(&rx, NULL, receive, "RX");
pthread_join(tx, NULL);
pthread_join(rx, NULL);
return 0;
}
参考
https://www.cnblogs.com/maycpou/p/13895295.html
https://zhuanlan.zhihu.com/p/97418361
1 条评论
您好~我是腾讯云开发者社区的运营,关注了您分享的技术博客,觉得内容很棒,我们诚挚邀请您加入腾讯云自媒体分享计划。完整福利和申请地址请见:https://cloud.tencent.com/developer/support-plan 作者申请此计划后将作者的文章进行搬迁同步到社区的专栏下,你只需要简单填写一下表单申请即可,我们会给作者提供包括流量、云服务器等,另外还有些周边礼物。