Linux c线程

1、pthread_create
2、pthread_join
3、sem_init    sem_destroy
4、sem_post   sem_wait
5、所有线程可以共同访问全局区
---------------------------------------------------------------------------------
【1】程序:静态存储在磁盘上
        进程:程序动态执行时
        线程:可以将进程划分成多个子任务执行
        
【2】线程是依附于进程存在的
        多个线程共同享有进程的内存空间
        其中全局区可以被所有的线程访问
        
【3】线程的创建
       int pthread_create(pthread_t *thread,  pthread_attr_t *attr,  void *(*start_routine) (void *), void *arg);
       功能:在当前进程(主线程)内开启一个新的线程(副线程)。
       参数:thread:存储线程ID
                  attr:NULL,默认的线程属性:8M的栈空间
                  start:传一个函数名,线程的执行体
                  arg:NULL
       返回:成功返回0,失败非0
       注意:编译时加 -pthread


【4】int pthread_join(pthread_t thread, void **retval);
       功能:阻塞等待一个线程的退出,当该线程结束则唤醒等待
       参数:thread:线程ID,指定等待的副线程
                  retval:承接pthread_exit返回的结果值或NULL
       
       void pthread_exit(void *retval);
       功能:用于结束一个线程
       参数:retval用于给pthread_join返回一个数据,
       注意:参数只能传递全局变量的地址或常量的地址或NULL


【5】无名信号量:解决线程同步问题,解决任务执行的先后顺序
        int sem_init(sem_t *sem, int pshared, unsigned int value);
        功能:初始化一个信号量
        参数:sem:被初始化的信号量
                pshared:0用于线程间同步
                value:信号量的初始值
 
        int sem_destroy(sem_t *sem);
        功能:销毁信号量
        
        int sem_wait(sem_t *sem);
        功能:用于消耗一个信号量
        
        int sem_post(sem_t *sem);
        功能:用于产生一个信号量

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章