C++ 线程与进程常用函数以及使用示例

本文介绍了C++中多线程的使用,包括如何使用pthread_create创建线程,展示了一个创建线程并打印进程ID和线程ID的例子。接着,探讨了线程的终止方法,如return、pthread_cancel和pthread_exit,并通过实例演示了不同终止方式的效果。最后,讨论了线程的detach状态,解释了detach状态的意义以及调用pthread_detach的注意事项。
摘要由CSDN通过智能技术生成

1.创建线程的函数使用的是pthread_create()

#include <pthread.h>
int pthread_create(pthread_t *restrict thread,const pthread_attr_t *restrict attr,
void *(start_routine)(void*),void* restrict arg);

参数restrict限制了只能通过该指针更改所指内存,其他指针均不能更改该内存内容。
start_routine是执行新线程的函数,传给它的参数是arg,函数执行完线程就退出了,其他线程可以调用phread_join()得到此函数的返回值。
thread用来存储新创建线程的线程id,线程id是pthread_t类型,调用pthread_self()可以获取当前线程的id;进程id是pid_t类型,可以通过getpid()获取当前进程的id,同一进程下的多个线程具有相同的pid_t,因此getpid()获取的值都是一样的。
如果创建线程成功则返回0,失败则返回一个正整数。

int pthread_join(pthread_t thread,void **status);
其他线程调用这个函数后,会一直等待线程thread结束,把线程返回值保存在status中。
获取成功则返回0,失败则返回-1,并设置errno。

如果任意线程调用exit或者_exit,那么整个进程的所有线程都会终止,main()函数调用return也相当于调用exit(),为了防止子线程还没有执行完,主线程就已经终止,可以在main()函数里调用sleep(1)来暂停一秒。

下面写一个例子,主函数下创建一个线程,该线程调用一个函数打印当前进程id和线程id,主函数也调用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值