一、 线程间通信
1.线程通信:直接共享进程的资源(利用全局变量)
2.信号(同进程):pthread_kill();
int pthread_kill(pthread_t thread, int sig);
头文件:#include <pthread.h>
#include <signal.h>
参数: thread :线程ID,sig 发送的信号
返回值:成功: 0
#include <stdio.h>
#include <pthread.h>
#include <unistd.h>
#include <signal.h>
void *Fun(void *p);
int main()
{
pthread_t id = 0;
pthread_create(&id,NULL,Fun,NULL);
sleep(4);
pthread_kill(id,9);//效果和进程一样,9号信号是杀死进程
pthread_join(id,NULL);
printf("别想了,子线程已经被杀死\n");//这句话不会被打印
return 0;
}
void *Fun(void *p)
{
while(1)
{
printf("中午吃什么\n");
sleep(1);
}
}#include <stdio.h>
#include <pthread.h>
#include <unistd.h>
#include <signal.h>
void *Fun(void *p);
int main()
{
pthread_t id = 0;
pthread_create(&id,NULL,Fun,NULL);
sleep(4);
pthread_kill(id,9);//效果和进程一样,9号信号是杀死进程
pthread_join(id,NULL);
printf("别想了,子线程已经被杀死\n");//这句话不会被打印
return 0;
}
void *Fun(void *p)
{
while(1)
{
printf("中午吃什么\n");
sleep(1);
}
}
二、 线程的同步和互斥
2.1互斥锁:
使用流程
1、定义一个互斥锁:pthread_mutex_t mutex;
初始化一个互斥锁:pthread_mutex_init();
2、竞争占用互斥锁(上锁):pthread_mutex_lock
3、释放互斥锁资源(解锁):pthread_mutex_unlock
4、销毁互斥锁:pthread_mutex_destroy
2.1.1创建&初始化互斥锁
方式1: