pthread创建多线程函数
pthread_create(&thread, &attr, f, static_cast<void *>(&args));
(1)&thread:事先创建好的pthread_t类型的参数,成功时tidp指向的内存单元被设置为新创建线程的线程ID。
(2)&attr:用于定制各种不同的线程属性。例如优先级策略等。
(3)f:新创建线程从此函数开始运行。
(4)&args:tart_rtn函数的参数,无参数时设为NULL即可,有参数时输入参数的地址,当多于一个参数时应当使用结构体传入。
当返回值为0时,代表线程创建成功,返回其他值则失败。
在Ubuntu20.4,Qt5.14.2环境下,使用pthread创建线程时会失败,具体原因为:当参数2不为NULL,即有自定义线程属性传入时,pthread创建线程需要用sudo的方式打开Qt,即需要较高权限。因此,创建多线程时不需要自定义线程属性,可以将参数2赋为NULL即可无需sudo权限打开Qt。
或者直接使用C++11中的std::thread。
C++11中加入了<thread>头文件,此头文件主要声明了std::thread线程类。C++11的标准类std::thread对线程进行了封装,定义了C++11标准中的一些表示线程的类、用于互斥访问的类与方法等。