ygccccdgl 2021-08-20 14:41 采纳率: 100%
浏览 75
已结题

C#多线程问题 抢占问题

要求四个线程 抢占线程 输出1~100
要求用到lock unlock

累似 如下C++代码思路(下面的unlock有点儿问题)
#include
#include
#include//互斥锁

using namespace std;//调用命名空间std内定义的所有标识符

mutex mutex_number;

const int MAXNUM = 100;
int number = 0;

void outNumber(int index)
{
while (1) {
mutex_number.lock();
if (number >= MAXNUM) {
mutex_number.unlock();
break;
}
number++;
cout << "mythread_ " << index + 1 << ": " << number << endl; // 输出
mutex_number.unlock();
}

}//抢占线程
int main()
{
//声明四个线程
thread mythread[4];
for (int i = 0; i < 4; i++)
{
mythread[i] = thread(outNumber,i);//第一个参数为函数名,第二个为线程参数
}
// 阻塞线程,等待加入
for (int i = 0; i < 4; i++)
mythread[i].join();

return 0;

}

  • 写回答

1条回答 默认 最新

  • CSDN专家-showbo 2021-08-20 15:00
    关注

    这样?有帮助麻烦点个采纳【本回答右上角】,谢谢~~

    img

    using System;
    using System.Threading;
    namespace ConsoleApplication1
    {
        class Program
        {
            int num = 0, maxnum = 100;
            void outNumber(object index)
            {
                while (true)
                {
                    Monitor.Enter(this);
                    if (num >= maxnum) break;
                    num++;
                    Console.WriteLine("线程" + index + ":" + num);
    
                    Monitor.Exit(this);
                }
            }
            static void Main(string[] args)
            {
                var p = new Program();
                var pools = new Thread[4];
                for (var i = 0; i < 4; i++)
                {
                    pools[i] = new Thread(p.outNumber);
                }
                for (var i = 0; i < 4; i++)
                {
                    pools[i].Start(i);
                }
                
                Console.ReadKey();
            }
        }
    }
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 8月29日
  • 已采纳回答 8月21日
  • 创建了问题 8月20日

悬赏问题

  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
  • ¥15 ETLCloud 处理json多层级问题
  • ¥15 matlab中使用gurobi时报错
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭
  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么