linuxC多线程:帮我记住
来源:互联网 发布:淘宝文艺店铺推荐 知乎 编辑:程序博客网 时间:2024/05/01 08:10
多线程:
* 头文件 <pthread.h> , 链接库 -lpthread , pthread_t 类型 pthread_attr_t 属性类型
* 3个常用函数:
int pthread_create(标识符,属性NULL,函数void* (*fun)(void*) , (void* ) 参数指针); // 创建一个线程
void pthread_exit(void* retval); 这个返回的东东可以被pthread_join()第二个参数接收啊; //线程退出,并且返回一个任意类型的东东的指针哦。
int pthread_join( pthread_t th, void ** thread_return ) ; //等待那个线程结束
注意:我们常用sleep来达到代码演示效果,也可以用while( i < 30 ) 来达到演示效果。
插入代码:420页
-------------------------------------------------------------------------
线程同步:信号量(有限制个数的访问的控制)、互斥量(单个访问的控制)
一。信号量:二进制信号量,计数信号量
*以sem_ 开头,4个基本函数 , * <semaphore.h> sem_t
* int seminit(sem_t &sem, int pshared , unsigned int value); 第二个参数:共享状态,设置为0表示局部,非0表示进程间共享, 第三个参数:初始化信号量的值:比如0
*int sem_wait( sem_t * sem ) ; //以原子方式 -1
*int sem_post( sem_t * sem); // sem_trywait(sem_t * sem); 以原子方式 +1
*int sem_destroy(sem_t * sem) ; //企图清理一个正在被线程等待的信号量,会收到一个错误。
****信号量变量应该做为全局变量哦。记得哦,因为他要用在多个线程函数中,所以必须全局变量。
*****技巧在于: 信号量为0 的时候,调用wait() 会等待哦 + while()的配合 + sleep() 的配合。
插入代码:424页
-------------------------------------------------------------------------
二。互斥量: 在临界区前加锁,后 解锁。 对一个加锁了的互斥量再加锁,会等待其解锁哦。(即阻塞)
* 与信号量的函数相似哦。 <pthread.h> 也有4个基本函数: pthread_mutex_t , 注意:和线程使用的是同一个头文件。
*int pthread_mutex_init ( pthread_mutex_t &mutex, const pthread_mutexattr_t *xxx) ; 属性先设置为NULL也可以的撒。
*int pthread_mutex_lock ( pthread_mutex_t *mutex);
*int pthread_mutex_unlock( pthread_mutex_t *mutex);
*int pthread_mutex_destroy( pthread_mutex_t * mutex);
插入代码:429页(linux 程序设计第4版)
---------------------------------------------------
线程属性:各种状态,设置各种调度方式。
线程取消:int pthread_cencel() , 线程也可以设置自己的 取消状态,来防止或者响应别的线程发送过来的取消消息。
多线程:要防止太快,有必要时以局部接收一份copy,这样可以防止太快被改变了。
- linuxC多线程:帮我记住
- linuxC套接字socket:帮我记住
- 进程和信号和IPC机制:帮我记住
- linuxc多线程参数传递
- LinuxC多线程求和
- LinuxC多线程详解
- 记住我
- 记住我
- Linuxc
- linuxc
- 三个工具帮你记住Linux命令
- LinuxC多线程编程第一篇:线程创建
- LinuxC多线程编程第二篇:线程终止
- LinuxC多线程编程第一篇:线程创建
- LinuxC多线程编程第二篇:线程终止
- 帮你理解多线程
- 我要记住的
- 我要记住的话
- ConnectionUtil
- 第2章 这不是Bug, 而是语言特性
- Android ImageView example
- 多线程应用中如何避免性能问题
- ArcGIS Server 中的动态文字标注(及其他图形)
- linuxC多线程:帮我记住
- GridView和Repeater自定义分页功能的实现
- Android.mk的用法和基础
- ZEND STUDIO 9.0 双机同时使用的方法
- 第四篇
- 软件工程学习笔记一
- Linux下串口编程
- 关于main函数
- An Easy Problem!