zoukankan      html  css  js  c++  java
  • 深入理解计算机系统(第三版)第十二章重要内容摘要

    12.1基于进程的并发编程

    12.1.1基于进程的并发服务器

    12.1.2进程的优劣

    12.2基于I/O多路复用的并发编程

     

     

     

    12.2.1基于I/O多路复用的并发事件驱动器

    12.2.2I/O多路复用技术的优劣

    优点

    1、

    2、

     

    3、  

    4、

     缺点

    1、

    2、

    12.3基于线程的并发编程

     

    12.3.1线程执行模型

    12.3.2Posix线程

    12.3.3创建线程

     

    12.3.4终止线程

    12.3.5回收已终止线程的资源

    12.3.6分离线程

    12.3.7初始化线程

    12.3.8基于线程的并发服务器

    12.4多线程程序的共享变量

    12.4.1线程内存模型 

    12.4.2将变量映射到内存

    12.4.3共享变量

    12.5用信号量同步线程

    // 
    /* WARING: This code is buggy */  
    #include "csapp.h"  
    

    void thread(void vargp); / thread routine prototype /

    / globle shared variable /
    volatile long cnt = 0; / counter /

    int main(int argc, char **argv)
    {
    long niters;
    pthread_t tid1, tid2;

    </span><span style="color: #008000;">/*</span><span style="color: #008000;"> check input argument </span><span style="color: #008000;">*/</span>  
    <span style="color: #0000ff;">if</span> (argc != <span style="color: #800080;">2</span><span style="color: #000000;">) {  
        printf(</span><span style="color: #800000;">"</span><span style="color: #800000;">usage: %s &lt;niters&gt;
    </span><span style="color: #800000;">"</span>, argv[<span style="color: #800080;">0</span><span style="color: #000000;">]);  
        exit(</span><span style="color: #800080;">0</span><span style="color: #000000;">);  
    }  
    niters </span>= atoi(argv[<span style="color: #800080;">1</span><span style="color: #000000;">]);  
      
    </span><span style="color: #008000;">/*</span><span style="color: #008000;"> create threads and wait for them to finish </span><span style="color: #008000;">*/</span><span style="color: #000000;">  
    pthread_create(</span>&amp;tid1, NULL, thread, &amp;<span style="color: #000000;">niters);  
    pthread_create(</span>&amp;tid2, NULL, thread, &amp;<span style="color: #000000;">niters);  
    pthread_join(tid1, NULL);  
    pthread_join(tid2, NULL);  
      
    </span><span style="color: #008000;">/*</span><span style="color: #008000;"> check result </span><span style="color: #008000;">*/</span>  
    <span style="color: #0000ff;">if</span> (cnt != (<span style="color: #800080;">2</span> *<span style="color: #000000;"> niters))  
        printf(</span><span style="color: #800000;">"</span><span style="color: #800000;">BOOM! cnt = %1d
    </span><span style="color: #800000;">"</span><span style="color: #000000;">, cnt);  
    </span><span style="color: #0000ff;">else</span><span style="color: #000000;">  
        printf(</span><span style="color: #800000;">"</span><span style="color: #800000;">OK cnt = %1d
    </span><span style="color: #800000;">"</span><span style="color: #000000;">, cnt);  
    exit(</span><span style="color: #800080;">0</span><span style="color: #000000;">);  
    

    }

    / thread routine /
    void *thread(void *vargp)
    {
    long i, niters = *((long *)vargp);

    </span><span style="color: #0000ff;">for</span> (i = <span style="color: #800080;">0</span>; i &lt; niters; i++<span style="color: #000000;">)  
        cnt</span>++<span style="color: #000000;">;  
          
    </span><span style="color: #0000ff;">return</span><span style="color: #000000;"> NULL;  
    

    }
    //

    12.5.1进度图

    12.5.2信号量

     

    12.5.3使用信号量实现互斥

    12.5.4利用信号量来调度共享资源

    1.生产者-消费者问题

    2.读者-写者问题

    12.5.5综合:基于预线程化的并发服务器

    12.6使用线程提高并行性

    刻画并行程序的性能

     

    12.7其他并行问题

    12.7.2可重入性

    12.7.3在线程化的程序中使用已存在的库函数

    12.7.4竞争

    12.7.5死锁

  • 相关阅读:
    Ubuntu18.04下搭建LNMP教程-超详细图文(Nginx+MySQL+PHP含各种解决报错问题)
    win10下Ubuntu18.04安装的简单教程
    Bugku-CTF加密篇之富强民主
    PHP中PHP $_POST和PHP $_REQUEST及PHP $_GET的用法及区别
    Base系列编码浅析【base16 base32 base64 base85 base36 base 58 base91 base 92 base62】
    Bugku-CTF加密篇之贝斯家族(@iH<,{bdR2H;i6*Tm,Wx2izpx2!)
    Bugku-CTF加密篇之这不是md5(666c61677b616537333538376261353662616566357d)
    Bugku-CTF加密篇之告诉你个秘密(ISCCCTF)
    攻防世界—pwn—guess_num
    攻防世界—pwn—level2
  • 原文地址:https://www.cnblogs.com/GodZhuan/p/14298783.html
Copyright © 2011-2022 走看看