线程

线程同步:信号量、互斥锁、条件变量
系统调度其实是调用线程创建的函数
 
谈进程:
 
3.7.1.  再论进程
7.1.1、多进程实现同时读取键盘和鼠标
          使用进程技术的优势:
        (1)CPU分时复用,单核心CPU可以实现宏观上的并行,微观上的串行
        (2)实现多任务系统需求(多任务的需求是客观的)
7.1.3、进程技术的劣势:
        (1)进程间切换开销大
        (2)进程间通信麻烦而且效率低
7.1.4、解决方案就是线程技术
         (1)线程技术保留了进程技术实现多任务的特性
         (2)线程的改进就是在线程间切换和线程间通信上提升了效率
         (3)多线程在多核心CPU上面更有优势
 
 
3.7.2.线程的引入
3.7.2.1、使用线程技术同时读取键盘和鼠标
3.7.2.2、1inux中的线程简介
           (1)一种轻量级进程
           (2)线程是参与内核调度的最小单元
           (3)一个进程中可以有多个线程
3.7.2.3、线程技术的优势
          (1)像进程一样可被OS调度
          (2)同一进程的多个线程之间很容易高效率通信
          (3)在多核心CPU(对称多处理器架构)架构下效率最大化
 
 
3.7.3.线程常见函数
3.7.3.1、线程创建与回收         
(1)pthread_create        主线程用来创造子线程的
(2)pthread_join            主线程用来等待(阻塞)回收子线程
(3)pthread_detach       主线程用来分离子线程,分离后主线程不必再去回收子线程
3.7.3.2、线程取消           
(1)pthread_cancel        一般都是主线程调用该函数去取消(让它赶紧死)子线程
(2)pthread_setcancelstate   子线程设置自己是否允许被取消
(3)pthread_setcanceltype
3.7.3.3、线程函数退出相关              
(1) pthread_exit与 return     退出,正常范围使用 pthread_exit
(2) pthread_cleanup push    压入
(3) pthread_cleanup pop      弹出  
3.7.3.4、获取线程id              
(1)pthread_self     
 
 
锁举例:
       int cnt = 0;
      if(cnt ==0)
        {
              cnt++;
               pthread_cleanup_push(function,arg);
               //子线程操作
               
                //子线程在这里有可能被主线程cannel(取消)         
             
                 cnt--;
                }
 
        void function(void  *arg)
           {
              cnt--;//在被调用的时候将锁已经打开,提前被线程取消
                   }
    
 
 
3.7.6.线程同步之互斥锁
3.7.6.1、什么是互斥锁
(1)互斥锁又叫互斥量( mutex)
(2)相关函数: pthread_mutex_init             //初始化锁
                           pthread_mutex_destroy      //取消锁
                           pthread_mutex_lock          //上锁
                           pthread_mutex_unlock      //解锁
(3)互斥锁和信号量的关系:可以认为互斥锁是一种一种特殊的信号量
(4)互斥锁主要用来实现关键段保护
 
7.6.2、用互斥锁来实现上节的代码
 
 
 
 
线程同步之条件变量:
 
什么是条件变量
相关函数
 
         pthread_cond_init             pthread_cond_destory
         pthread_cond_wait           pthread_cond_signal/pthread_cond_brocast
 
 
使用条件变量来实现上节点代码
线程同步总结
posted @ 2020-09-30 22:12  数字青年  阅读(39)  评论(0)    收藏  举报