首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

我需要一种干净的方式在C#中的两个执行线程之间握手

在C#中,可以使用线程同步机制来实现两个执行线程之间的握手。一种常用的干净方式是使用 ManualResetEvent 类。

ManualResetEvent 是一个同步基元,它允许一个或多个线程等待,直到收到信号后才继续执行。下面是一个示例代码:

代码语言:txt
复制
using System;
using System.Threading;

class Program
{
    static ManualResetEvent mre = new ManualResetEvent(false);

    static void Main()
    {
        Thread t1 = new Thread(DoWork1);
        Thread t2 = new Thread(DoWork2);

        t1.Start();
        t2.Start();

        // 等待两个线程完成工作
        t1.Join();
        t2.Join();

        Console.WriteLine("握手完成");
        Console.ReadLine();
    }

    static void DoWork1()
    {
        Console.WriteLine("线程1开始执行工作");
        // 执行线程1的工作

        // 发送信号,通知线程2可以开始工作
        mre.Set();
    }

    static void DoWork2()
    {
        Console.WriteLine("线程2等待握手");
        // 等待线程1发送信号
        mre.WaitOne();

        Console.WriteLine("线程2开始执行工作");
        // 执行线程2的工作
    }
}

在上述示例中,我们创建了一个 ManualResetEvent 对象 mre,并将其初始状态设置为 false。线程1开始执行工作后,通过调用 mre.Set() 发送信号,通知线程2可以开始工作。线程2在执行工作前,调用 mre.WaitOne() 等待线程1发送信号。当线程1发送信号后,线程2收到信号,继续执行工作。

这种方式可以确保两个执行线程之间的握手是干净的,即线程2会等待线程1发送信号后才开始执行工作。

推荐的腾讯云相关产品:腾讯云服务器(CVM)- 提供稳定可靠的云服务器实例,支持多种操作系统,满足各类应用场景的需求。详情请参考:腾讯云服务器产品介绍

请注意,以上答案仅供参考,具体实现方式可能因实际需求和环境而异。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券