线程基础
来源:互联网 发布:淘宝运营需要会什么 编辑:程序博客网 时间:2024/05/18 15:06
线程栈:在线程内部定义的局部变量,为线程私有,当线程结束时,该空间被释放。
如果在线程内部申请堆空间,当线程结束时,该空间不会被释放,为进程共有
线程分离属性:在创建一个线程时,可以它设为分离线程,进程不需要调用pthread_join为其收尸,当线程结束时,由系统自动回收资源。
一个线程默认属性是可联合的(PTHREAD_CREATE_JOINABLE),即线程结束时,需要调用pthread_join来收尸。
pthread_attr_t attr; //线程属性类型。
pthread_attr_init(&attr); //对线程属性进行初始化
pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);//设置线程属性为分离属性
pthread_create(&tid, &attr, func, NULL);//创建一个分离线程
互斥锁:
功能:1、使多个进程可以互斥访问共享资源
2、保护一段重要的代码,使这段代码在执行过程中,不会被打断。( 银行的存款和查询系统)
条件变量:
类型:
pthread_cond_t cond;
pthread_mutex_t mutex;
//对互斥锁和条件变量进行初始化
pthread_mutex_init(&mutex, NULL);
pthread_cond_init(&cond, NULL);
pthread_mutex_lock(&m);
while(global != 100)
{
pthread_cond_wait(&cond, &mutex);
}
//xxxxxxxx临界区xxxxxxxxx
pthread_mutex_unlock(&m);
//向等待条件的线程发送信号
pthread_cond_signal(&cond);//
pthread_cond_broadcat(&cond);//广播式发送
sem_t sem1;
sem_t sem2;
sem_init(&sem1);
sem_init(&sem2);
如果在线程内部申请堆空间,当线程结束时,该空间不会被释放,为进程共有
线程分离属性:在创建一个线程时,可以它设为分离线程,进程不需要调用pthread_join为其收尸,当线程结束时,由系统自动回收资源。
一个线程默认属性是可联合的(PTHREAD_CREATE_JOINABLE),即线程结束时,需要调用pthread_join来收尸。
pthread_attr_t attr; //线程属性类型。
pthread_attr_init(&attr); //对线程属性进行初始化
pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);//设置线程属性为分离属性
pthread_create(&tid, &attr, func, NULL);//创建一个分离线程
互斥锁:
功能:1、使多个进程可以互斥访问共享资源
2、保护一段重要的代码,使这段代码在执行过程中,不会被打断。( 银行的存款和查询系统)
条件变量:
类型:
pthread_cond_t cond;
pthread_mutex_t mutex;
//对互斥锁和条件变量进行初始化
pthread_mutex_init(&mutex, NULL);
pthread_cond_init(&cond, NULL);
pthread_mutex_lock(&m);
while(global != 100)
{
pthread_cond_wait(&cond, &mutex);
}
//xxxxxxxx临界区xxxxxxxxx
pthread_mutex_unlock(&m);
//向等待条件的线程发送信号
pthread_cond_signal(&cond);//
pthread_cond_broadcat(&cond);//广播式发送
sem_t sem1;
sem_t sem2;
sem_init(&sem1);
sem_init(&sem2);
- 线程基础
- 线程基础
- 线程基础
- 线程基础
- 线程基础
- 线程基础
- 线程基础
- 线程基础
- 线程基础
- 线程基础
- 线程基础
- 线程基础
- 线程基础
- 线程基础
- 线程基础
- 线程基础
- 线程基础
- 线程基础
- NServiceBus之GateWay
- 自定义控件
- MongoDB自学笔记5---2.3 mongod启动参数
- 常用Web Service汇总(天气预报、时刻表等)(转)
- 直接选择排序
- 线程基础
- 函数调用约定
- Delphi遍历所有控件
- UVA 12299
- NServiceBus之Distributor
- 希尔排序的实质就是分组插入排序
- 学习ajax 笔记(一)
- 没有找到php_mbstring.dll,文件无法启动解决办法
- 分析C语言一些易错点和思维逻辑