Pthread学习笔记(1)
在开始写这篇笔记的时候才知道LINUX没有真正意义的线程,LINUX下没有给线程设计专有的结构体,它的线程是用进程模拟的,而它是由多个进程共享一块地址空间而模拟得到的。在这篇博客倒是有描述https://blog.csdn.net/weixin_33472998/article/details/116789184。
关于线程是什么,为什么要用线程,线程和进程的区别就不多加描述了 (主要是因为这笔记是想给自己看的,所以对某些问题的解释就网上太多了,加上去对自己写笔记太浪费时间了)。
创建线程
在Pthread的库中提供了如下函数用于线程的创建,所以要包含pthread.h这个头文件:
int pthread_create(pthread_t *thread, const pthread_attr_t *attr,void *(*start_routine) (void *), void *arg)
该函数中第一个参数为pthread_t,在库中的定义也就是一个无符号长整型:
typedef unsigned long int pthread_t;
这是一个用于记录创建的线程id的变量类型。
函数的第二个参数attr适用于设置线程属性的,如果是NULL则线程创建属性为默认,第三个参数为线程的入口函数,线程从该函数开始运行,第四个参数是唯一用于向创建的线程传参的参数,那么如下代码:
#include<pthread.h>
#include<stdio.h>
using namespace std;
pthread_t pt;
void* func(void* arg)
{
int parentid=(int)(long)arg;