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

C++ - VS2019配置pthread线程库

时间:2023-05-05 18:24:05浏览次数:49  
标签:Pre pthreads C++ dll 线程 pthread include

说明

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

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

 

配置

如下图分别配置三大项:

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

 

解决报错

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

#define HAVE_STRUCT_TIMESPEC

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

 

 

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

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

 

测试代码

#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,pthreads,C++,dll,线程,pthread,include
From: https://www.cnblogs.com/zhuchunlin/p/17375026.html

相关文章

  • C++ 命名空间
    C++命名空间假设这样一种情况,当一个班上有两个名叫Zara的学生时,为了明确区分它们,我们在使用名字之外,不得不使用一些额外的信息,比如他们的家庭住址,或者他们父母的名字等等。同样的情况也出现在C++应用程序中。例如,您可能会写一个名为xyz()的函数,在另一个可用的库中也存在......
  • C++ 循环
     有的时候,可能需要多次执行同一块代码。一般情况下,语句是顺序执行的:函数中的第一个语句先执行,接着是第二个语句,依此类推。编程语言提供了允许更为复杂的执行路径的多种控制结构。循环语句允许我们多次执行一个语句或语句组,下面是大多数编程语言中循环语句的一般形式::loop:循......
  • 1688|Taobao|JD京东api接口获取商品详情C++演示案例
    ​ 商品详情页的作用:介绍产品信息、给出购买理由、提升信任感、提出售后保障。1、介绍产品信息:产品信息表做得越完整,越能让用户更细致了解产品,也减少了售前客服咨询的工作量。2、给出购买理由:在用户初步了解了产品信息后,商家就需要展示商品优势,给出核心卖点。接下来小编会展......
  • C++统计代码运行时间
    本来想自己写的,一看github上面都有就不再重复造轮子了。github上的项目如下:StopWatch纯标准库实现:使用std::chrono::high_resolution_clock,其实就是std::chrono::steady_clock的别名。StopWatch类似C#的实现:和C#的StopWatch比较像,在Windows下使用的是QueryPerformanceCounter......
  • C++的友元类
    C++中的友元类是一种特殊的类,它允许一个类授权另一个类或函数访问其私有成员。友元类的使用可以提供更好的封装和安全性,同时也可以增强代码的灵活性和可读性。声明友元类在C++中,声明一个类为另一个类的友元类需要在该类中进行声明。例如,如果类MyClass1希望将类MyClass2声......
  • 【C++之类构造函数和析构函数】
    【C++之类构造函数和析构函数】类的构造函数:1.类的构造函数是类的一种特殊的成员函数,它会在每次创建类的新对象时执行。2.构造函数的名称与类的名称是完全相同的,并且不会返回任何类型,也不会返回void。3.构造函数可用于为某些成员变量设置初始值。类的析构函数:1.类的析构函......
  • 模板方法中的线程安全问题
    1、线程安全?是否存在临界区,共享的变量,会被不同线程写入那么模板方法里面基类的成员变量或者方法就会存在线程安全问题2、excel  AbstractExcelSheet业务数据和excel逻辑解耦让data可以在service层之间set进来这样excel的相关类不用添加到spring容器中 pub......
  • 开心档之C++ 重载运算符和重载函数
    C++重载运算符和重载函数C++允许在同一作用域中的某个函数 和运算符 指定多个定义,分别称为函数重载 和运算符重载。重载声明是指一个与之前已经在该作用域内声明过的函数或方法具有相同名称的声明,但是它们的参数列表和定义(实现)不相同。当您调用一个重载函数 或重载运算符 时......
  • 编程打卡: C++ 语言程序设计
    #include<iostream>usingnamespacestd;classComplex{protected:doublereal;doubleimag;public:Complex(doubler=0.0,doublei=0.0):real(r),imag(i){};Complexoperator+(constComplex&c){......
  • C语言多线程
    线程按照其调度者可以分为用户级线程和核心级线程两种 用户级线程主要解决的是上下文切换的问题,它的调度算法和调度过程全部由用户自行选择决定,在运行时不需要特定的内核支持; 我们常用基本就是用户级线程,所以就只总结一下POSIX提供的用户级线程接口; 基本线程操作相关的函数: 1......