这篇是进程线程的博文的最后一篇了,至此进程线程的所有同步内容已经全部回顾完了。
其中信号和信号量看起来名字很像,实际上却是完全不一样的两个东西,信号和信号量在进程线程中都可以使用。而且使用方式也基本完全一样。
进程中的共享内存,线程中的互斥锁,条件变量。这些是独有的,但实际也能互相使用,《Unix网络编程》中对这些的总结是按需所用。
前面提到过线程回收,类似进程回收,线程回收的pthread_join也是接收子线程的销毁消息。
使用kill -l查看linux中的信号。
这次还是使用USR1信号作为用户的定义信号,进行线程的通信。
这块代码由于需要给指定的函数传入函数指针,为了消除this指针使用了几个static静态函数和静态成员。比较暴力QAQ
1 #include <sys/types.h> 2 #include <pthread.h> 3 #include <unistd.h> 4 #include <signal.h> 5 #include <string.h> 6 #include <iostream> 7 #include <stdlib.h> 8 9 using namespace std; 10 11 class sigOp 12 { 13 public: 14 void addSigProcess(int sig,void (*func)(int)); 15 void sendSig(const int sig, const int pid); 16 }; 17 void sigOp::addSigProcess(int sig,void (*func)(int)) 18 { 19 struct sigaction stuSig; 20 memset(&stuSig, '