Linux c线程

非 Y 不嫁゛ 提交于 2019-11-28 07:21:00

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);
        功能:用于产生一个信号量

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!