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;

}

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

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();
        }
    }
}