首页 > 编程语言 >C++ - VS2019配置pthread线程库

C++ - VS2019配置pthread线程库

时间:2024-07-30 15:17:01浏览次数:14  
标签:Pre pthreadVC2 pthreads C++ 线程 pthread include

1. 说明

在VS里用MS编译器不能直接调用pthread库,需要先自行下载该库:http://sourceware.org/pub/pthreads-win32/pthreads-w32-2-9-1-release.zip

解压后用得到的只有Pre-built.2文件夹下的文件。

2. 配置

如下图分别配置三大项:

  • 包含目录-->...pthreads-w32-2-9-1-release\Pre-built.2\include
  • 库目录-->...pthreads-w32-2-9-1-release\Pre-built.2\lib\x86
  • 附加依赖项-->pthreadVC2.lib

 

3. 解决报错

(1) 如果代码运行报错:“timespec”;”struct”类型重定义。解决方法:在pthread.h在第35行加入如下代码:

 
#define HAVE_STRUCT_TIMESPEC

或者在项目属性->CC++->预处理器->预处理器定义添加HAVE_STRUCT_TIMESPEC

 

(2) 如果代码运行报错:找不到pthreadVC2.dll。解决方法:将pthreadVC2.dll拷贝到项目的Debug目录下

或者 打开Pre-built.2文件夹,有两个不同平台的pthreadVC2.dll,把x64下的文件放到C:\Windows\System32\下, 把x86文件夹放到C:\Windows\SysWOW64\下。

 

4. 测试代码

 
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>//使用多线程时需要添加<pthread.h>这个头文件
#include <Windows.h>

void* pFunc(void* arg)
{
	int m = 1;
	while (1) 
	{
		printf("线程 --- m: %d\n", m++);
		Sleep(1000);
	}
}


int main() 
{
	int n = 1;
	//创建一个线程
	pthread_t pid;
	pthread_create(&pid, NULL, pFunc, NULL);
	while (1) 
	{
		printf("主函数 --- n: %d\n", n++);
		Sleep(1000);
	}
	return 0;
}

运行结果:

 

标签:Pre,pthreadVC2,pthreads,C++,线程,pthread,include
From: https://www.cnblogs.com/zhuchunlin/p/18332516

相关文章

  • C++(常量成员函数)
    目录1.声明与定义2.常量成员函数的特点3.常量成员函数的使用4.关键字mutable5.总结在C++中,常量成员函数(constmemberfunction)是指在函数声明的尾部加上const关键字的成员函数。这种函数不能修改类的成员变量,也不能调用会修改类成员变量的其他成员函数。常量成员函数保......
  • C++入门基础—(命名空间,输入输出,缺省参数,函数重载)
    目录1.1 C++发展史1.2C++版本更新1.3C++学习参考文档1.4C++的第一个程序2命名空间2.1命名空间的价值2.2namespace的定义1.命名空间中可以定义变量/函数/类型2.命名空间可以嵌套3.多⽂件中可以定义同名namespace,他们会默认合并到⼀起,就像同⼀个namespace⼀......
  • C++ 修饰符类型:深入理解与应用
    C++修饰符类型:深入理解与应用在C++编程中,修饰符(Modifiers)是编程语言中一种重要的语法特性,用于改变变量、函数、类等的默认行为或属性。修饰符在C++中扮演着至关重要的角色,它们不仅有助于增强代码的可读性和可维护性,还提供了更灵活和强大的编程能力。本文将深入探讨C+......
  • C++中函数调用的过程(包括参数传递、栈帧管理等)是怎样操作的
    在C++中,函数调用的过程是一个复杂但高效的操作,涉及到多个方面,包括参数传递、栈帧管理、返回机制等。下面将详细解释这些过程:1.参数传递C++中,函数参数的传递方式主要有两种:值传递(PassbyValue)和引用传递(PassbyReference或PassbyPointer)。值传递:在值传递中,函数参数是......
  • 【C++】————红黑树
                                 作者主页:   作者主页                           本篇博客专栏:C++                ......
  • C++刷题网站推荐
    1.信息学奥赛一本通想必大家都在这个网站刷过题我就不过多介绍了网址链接:信息学奥赛一本通(C++版)在线评测系统2.洛谷洛谷是个什么地方?洛谷创建于2013,至今已有百万用户,致力于为编程爱好者提供清爽、快捷的编程体验。它不仅仅是一个在线测题系统,更拥有强大的社区、在线学......
  • 干货-并发编程提高——线程的中断(六)
    执行IO命令的线程不管是本地IO还是网络IO在JVM中线程其状态都是Runable。相对于操作系统,OS会将当前线程挂起,然后由调度队列另起一个线程来执行。此时硬盘正在与CPU并发工作。当IO完成时,CPU会收到来自硬盘的中断信号。类似于回调的操作,告诉你,已经处理完了,等着收尸吧。此时之前......
  • 初识Java多线程
    Java中如何创建新线程?第一种方式:继承Thread类写一个子类继承Thread重写run方法创建该类的对象,代表一个线程调用start方法启动线程,该线程会执行run方法这种方式的优点在于编码方式简单,但是该类已经继承了Thread类,不能继承其他类。注意:启动线程时一定调用start方法,而非ru......
  • C/C++ 字符常量的注意事项
    在C/C++中,字符常量是一个或多个字符的固定序列,用于表示程序中的字符值。它们是用单引号('')括起来的单个字符,例如 'a' 或 '1'。在使用字符常量时,有几个重要的注意事项需要考虑:字符长度:字符常量只能包含一个字符。如果你尝试在单引号中包含多于一个字符,比如'ab',这会导致......
  • OpenGL3.3_C++_Windows(32)
    demoSSAOSSAO环境光照(AmbientLighting):光的散射,我们通过一个固定的常量作为环境光的模拟,但是这种固定的环境光并不能很好模拟散射,因为环境光不是一成不变的,环境光遮蔽:让(褶皱、孔洞)等变暗的方法近似模拟出间接光照,但是这一技术会带来很大的性能开销,因为它还......