zoukankan      html  css  js  c++  java
  • 线程

    线程同步:信号量、互斥锁、条件变量
    系统调度其实是调用线程创建的函数
     
    谈进程:
     
    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
     
     
    使用条件变量来实现上节点代码
    线程同步总结
  • 相关阅读:
    同一个表中今天的数据与昨天的数据合并,并制定列
    ◎UrlEncode 与 ◎UrlDeCode对应Lotusscript
    ExtJS初级教程之ExtJS Grid(三)
    ExtJS初级教程之ExtJS Tree(一)
    Collections常用的静态方法浅析之排序:sort(List list)
    ExtJS初级教程之ExtJS Tree(三)
    不能被复制的字符:'/u0000'
    ExtJS初级教程之ExtJS Tree(二)
    urlwriterfilter地址栏的伪装
    ExtJS初级教程之ExtJS Grid(一)
  • 原文地址:https://www.cnblogs.com/gz-blogs/p/13756680.html
Copyright © 2011-2022 走看看