pthread_create 函数
pthread_create 是 POSIX 线程库中用于创建一个新线程的函数。
函数定义:
1
2
3
4
#include <pthread.h>
int pthread_create(pthread_t *thread, const pthread_attr_t *attr,
void *(*start_routine) (void *), void *arg);
参数名称和解释:
thread
: 一个指向 pthread_t 类型变量的指针,用于存储新线程的 ID。attr
: 一个指向 pthread_attr_t 类型的指针,用于指定新线程的属性,如线程栈大小、线程调度策略等。start_routine
: 一个函数指针,指向新线程要执行的函数。arg
: 一个指针,传递给新线程要执行的函数作为参数。
所需的头文件:
1
#include <pthread.h>
函数作用:pthread_create 函数用于创建一个新的线程,并将其加入到调用进程中。新线程从 start_routine 函数的地址开始执行,传递给 start_routine 的参数为 arg。线程创建成功后,线程 ID 会存储在由 thread 指向的内存位置中。
函数返回值:如果函数执行成功,返回 0。如果返回其他值,则表示出现了错误。可以使用 strerror 函数将错误码转换为错误消息。
示例代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <pthread.h>
#include <iostream>
void* thread_func(void* arg) {
std::cout << "Hello from thread" << std::endl;
return NULL;
}
int main() {
pthread_t tid;
pthread_create(&tid, NULL, thread_func, NULL);
pthread_join(tid, NULL);
std::cout << "Thread finished" << std::endl;
return 0;
}
输出结果:
1
2
Hello from thread
Thread finished
pthread_detach 函数
函数定义:
1
int pthread_detach(pthread_t thread);
参数名称和解释:
thread
: 待分离的线程标识符
所需头文件:
1
#include <pthread.h>
函数作用:
pthread_detach()
函数将指定的线程标识符对应的线程分离,使得该线程可以自动回收资源,避免留下僵尸线程。一旦线程被分离,就不能再次被连接(pthread_join)。
函数返回值:
- 如果函数调用成功,返回0;
- 如果出现错误,返回非0的错误码。
示例代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include <iostream>
#include <pthread.h>
using namespace std;
void* thread_func(void* arg) {
cout << "Thread is running!" << endl;
pthread_exit(nullptr);
}
int main() {
pthread_t tid;
int ret = pthread_create(&tid, nullptr, thread_func, nullptr);
if (ret != 0) {
cerr << "Failed to create thread!" << endl;
return 1;
}
ret = pthread_detach(tid);
if (ret != 0) {
cerr << "Failed to detach thread!" << endl;
return 1;
}
cout << "Thread is detached!" << endl;
pthread_exit(nullptr);
}
在上述代码中,我们创建一个新线程,并在主线程中将该线程分离。最终,主线程退出,由于新线程已经被分离,不会影响整个程序的运行。
参考
写在最后
感谢你在茫茫人海中找到我🕵🏼
🎉你是第 个读者
㊗️ 你平安喜乐,顺遂无忧!
希望你读完有所收获~
🥂🥂🥂