并发相关知识

异步事件处理:查询法(频率高的事件)、通知发(频率低的事件)                                    

一、信号         

  1. 信号的概念
    1. 信号是软件层面的中断
    2. 信号的响应依赖于中断
    3. kill -l:1-31,标准信号, 34以后,实时信号
    4. 标准信号会丢失, 实时信号不会
  2. signal()
    1. void (*signal(int signum, void (*func)(int))) (int);
    2. 信号会打断阻塞的系统调用
  3. 信号的不可靠
    1. 信号的行为不可靠,执行现场是内核布置的,有可能第一次调用还没结束时就发生了第二次调用。
  4. 可重入函数
    1. 第一次调用还没结束又发送了第二次调用,但是不影响第二次函数调用的功能。
    2. 所有的系统调用都是可重入的。
  5. 信号的响应过程
    1. 思考:如何忽略掉一个信号的?标准信号为什么丢失?
      1. 把mask位(信号屏蔽字)置为0。
      2. 因为用位图,响应信号后会把mask置0,后续收到的信号都只会把pending置为1,按位与后还是0。
    2. 标准信号的响应没有严格的顺序
    3. 信号从收到到响应有一个不可避免的延迟:因为刚收到信号只是把pending字段置为1,要有中断的打断才能对信号作出响应。
    4. 信号是在从kernal到user路上被响应的(由于中断机制会使user态到kernal态)
    5. 不能从信号处理函数中随意的往外跳。(setjmp, longjmp)可能会错过把mask置为1的过程。
  6. 常用函数
    1. kill();发送信号
    2. raise(); 自己给自己发信号
    3. alarm();时间相关
    4. pause();等待信号
    5. abort()
    6. system()
    7. sleep
  7. 信号集
    1. 信号集类型:sigset_t
    2. sigemptyset()
    3. sigfillset()
    4. sigaddset()
    5. sigdelset()
    6. sigismember()
  8. 信号屏蔽字/pending集的处理
    1. sigprocmask()
    2. sigpending()
  9. 扩展
    1. sigsuspend()
    2. sigaction()
    3. setitimer()
  10. 实时信号

二、线程

 

 

 

  1. 线程属性
    1. pthread_attr_init()、pthread_attr_destroy()、pthread_attr_setstacksize()
    2. 线程同步的属性
      1. 互斥量属性(条件变量同理、读写锁)
        1. pthread_mutexattr_init();
        2. pthread_mutexatr_destroy()
        3. pthread_mutex_getpshared(); 是否跨进程其作用
        4. pthread_mutex_setpshared()
        5. clone()
        6. pthread_mutexattr_gettype()
        7. pthread_mutexattr_settype()
  2. 重入
    1. 多线程中的IO(使用的基本都是线程安全的)
    2. 线程与信号
      1. ptrhread_sigmask()
      2. sigwait()
      3. pthread_kill()
    3. 线程与fork
      1. posix中子进程中只含fork该子进程的线程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值