线程创建方式

  1. 什么是线程?
    进程是运行中的程序,多个进程实现了操作系统的并发;多个线程实现了进程的并发,是操作系统进行计算和调度的基本单位,进程有多个线程以完成不同的任务。同一进程下的多个线程共享内存空间和文件描述符等,所以线程之间通信要比进程通信方便的多,但是线程也有自己的独立空间,比如线程栈,它是其他线程不能访问的,线程栈从进程堆上分配内存,通过 ulimit -a可以查看线程栈大小为8M,为了防止其他线程践踏自己的线程栈,操作系统为栈后面分配一段缓冲区,一旦踏入这个缓冲区,就会引发段错误。
  2. 线程如何创建
    首先这些函数包含在#include <pthread.h>中
    定义一个线程号
    pthread_t tid;
    创建一个线程,并传入线程函数
    pthread_create(&tid,NULL,func,arg);
    arg是传给线程函数的参数,创建成功就会返回0,失败返回-1,至于什么时候执行看操作系统的调度。
    func函数类型是
    void *func(void*);
    主线程等待子线程执行完毕可以使用下面的函数
    pthread_join(pid,NULL);
    该函数一直阻塞知道子线程执行完毕
    主线程还可以将子线程分离
    pthread_detach(tid);
    子线程执行完毕应该回收它的资源,如果主线程执行完毕,子线程还在执行,那么这个线程就会变成僵尸县好吃呢个,中断输入 ps -ef 可以查看僵尸线程
    
    线程的退出方式有三种:
    return
    pthread_exit()终止自己
    通过其他线程调用pthread_cancel终止
    

     

  3. 线程之间同步的方式
    有互斥量,条件变量,信号量
    互斥锁:同一时刻只允许一个线程访问资源;
    条件锁:只有条件发生时,线程才能访问资源,这样不用一直等待资源;
    信号量:mutex=1时线程才能访问资源,semaphore=p>0时,表示可以允许p个线程访问资源,小于等于0表示不能有线程访问资源;
     
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值