zoukankan      html  css  js  c++  java
  • 多线程调度

    题目:

    四个线程t1,t2,t3,t4,向4个文件里写入数据。t1仅仅能写入1,t2仅仅能写入2,t3仅仅能写入3,t4仅仅能写入4,对4个文件A,B,C,D写入例如以下内容
    A:123412341234.....
    B:234123412341....
    C:341234123412....
    D:412341234123....
    怎么实现同步能够让线程并行工作?

    以下是一种相对效率较低的做法,由于不论什么时候仅仅有一个线程在工作。

    
     
    初始化信号量 S1 = 1, S2 = S3 = S4 = 0;
    t1()
    {
        static int i = 0;
        P(S1);
        if (i == 0)
            写A文件;
        else if (i == 1)
            写D文件;
        else if (i == 2)
            写C文件;
        else
            写B文件;
        i++;
        i = i % 4;
        V(S2);
    }
                
    t2()
    {
        static int i = 3;
        P(S2);
        if (i == 0)
            写A文件;
        else if (i == 1)
            写D文件;
        else if (i == 2)
            写C文件;
        else
            写B文件;
        i++;
        i = i % 4;
        V(S3);
    }
                
    t3()
    {
        static int i = 2;
        P(S3);
        if (i == 0)
            写A文件;
        else if (i == 1)
            写D文件;
        else if (i == 2)
            写C文件;
        else
            写B文件;
        i++;
        i = i % 4;
        V(S4);
    }
                
    t4()
    {
        static int i = 1;
        P(s4);
        if (i == 0)
            写A文件;
        else if (i == 1)
            写D文件;
        else if (i == 2)
            写C文件;
        else
            写B文件;
        i++;
        i = i % 4;
        V(S1);
    }


  • 相关阅读:
    浏览器默认样式
    display
    JS中的!=、== 、!==、===的用法和区别。
    getElementsByName
    让DIV的滚动条自动滚动到最底部
    uoj118 【UR #8】赴京赶考
    [MtOI2019]幽灵乐团
    uoj213 【UNR #1】争夺圣杯
    loj6198 谢特
    [CTSC2017]密钥
  • 原文地址:https://www.cnblogs.com/mqxnongmin/p/10931713.html
Copyright © 2011-2022 走看看