小编San*_*hao的帖子

Mutex如何与信号量相关?

添加:好的,所以我可以分隔互斥量和信号量,我只是想知道我的反击的想法是对的吗?即Release减1和WaitOne加一,只有当计数器大于零时,才允许运行.这句话对吗?

我有一些运行良好的代码:按顺序运行first()second()third().

我只想知道信号量中的计数器是如何工作的?我知道这是反制的.该版本减去1并且WaitOne添加一个,只有当计数器大于零时,它才会允许运行.对?

但是我读了另一件关于Mutex的书,这本书说Mutex Waitone减1,并且发布添加一个,所以mutex与信号量相反?对?

码:

using System;

namespace Algorithm.MultiThread
{
    class Semaphore
    {
        System.Threading.Semaphore s1, s2;
        public Semaphore()
        {
            s1 = new System.Threading.Semaphore(1, 5);
            s2 = new System.Threading.Semaphore(1, 5); //initialize as start counter 1
        }

        public void first()
        {
            Console.WriteLine("First");
            s1.Release(); // minus one
        }

        public void second()
        {
            s1.WaitOne(); //add one two times
            s1.WaitOne();
            Console.WriteLine("Second");
            s2.Release();
        }

        public void third()
        {
            s2.WaitOne(); // add one two times
            s2.WaitOne();
            Console.WriteLine("Third");

        }

        public void startnum(object obj)
        {
            int i = …
Run Code Online (Sandbox Code Playgroud)

c# multithreading mutex semaphore

4
推荐指数
1
解决办法
642
查看次数

标签 统计

c# ×1

multithreading ×1

mutex ×1

semaphore ×1