每天写文章相当于对前面的知识点进行总结,并且以后好复习。
线程类的实现其实简化起来比较简单,但是作者写得我有点看不懂,所以看了两天后我将其简化了并且测试通过了首先是Current头文件的学习,然后是Thread头文件的学习,然后是Threadpool的学习。
目录
一 Current类的学习
知识点:
1 __thread
线程共享进程的地址空间,全局变量,有自己的栈,程序计数器和寄存器等资源,也就是说全局变量是线程共享的,
所以当我们需要既是全局变量,又要是线程独享的话,我们需要将变量声明为 __thread,注意两道下划线。这个关键字只能修饰和c语言兼容的变量类型,不支持调用虚函数,构造函数,析构函数等
2 tid
在Linux中线程是以进程的方式实现的,以进程之间共享地址空间全局变量这些来实现
每个线程和进程一样都有一个task_struct结构体,而task_struct中有个成员pid就是唯一标识进程的,由getpid()取得。Linux下的POSIX线程也有一个id,类型 pthread_t,由pthread_self()取得,该id由线程库维护,其id空间是各个进程独立的(即 不同进程中的线程可能有相同的id)有时候我们可能需要知道线程的真实pid。比如进程P1要向另外一个进程P2中的某个线程发送信号时,既不能使用P2的pid,更不能使用线程的pthread id,而只能使