Window下的线程通信

前言

线程间的通信是非常重要的,在不同的业务场景下要选择不同通信方案。

一.互斥量

1.需要依赖开发人员的规范

二.事件

首先我们要通过CreateEvent创建一个事件出来,然后我们在事件启动成功的地方使用SetEvent设置事件的状态,这样子我们在WaitForSingleObject的地方就可以接收到了,最后就可以进行CloseHandle操作了。

二.消息机制

1.不需要加锁
2.传输的数据量有限
3.依赖于消息队列,而消息队列里面有大量的数据,会有30ms左右的延迟
4.不能同时处理两个消息(并发)

三.网络
四.IOCP,EPOLL

1.可以让网络的效率提高,随着线程的增多。性能不会急速下降!
2.网络为集群(多进程,跨服务器去协作)打下了铺垫,不用大改,小改就可以了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Window Form 应用程序是基于 Windows 操作系统 GUI 界面的应用程序,它使用了多线程技术。在 Window Form 应用程序中,主线程通常用于处理用户界面(UI)操作,而其他线程则用于执行后台任务,例如进行网络通信、文件处理等。这种方式可以避免长时间的操作阻塞 UI 线程,让应用程序更加流畅。 在 Window Form 应用程序中,创建线程的方式与标准的 C# 程序一样,可以使用 Thread 类或 ThreadPool 类来创建线程。但需要注意的是,在 UI 线程中访问 UI 控件是不安全的,必须使用 Invoke 或 BeginInvoke 方法来让 UI 线程更新 UI 控件。 例如,以下代码演示了如何在 Window Form 应用程序中创建一个后台线程来执行耗时的任务: ``` private void btnStart_Click(object sender, EventArgs e) { // 创建后台线程 Thread thread = new Thread(new ThreadStart(DoWork)); thread.Start(); } private void DoWork() { // 执行耗时的任务 // ... // 更新 UI 控件(需要使用 Invoke 或 BeginInvoke 方法) this.Invoke(new Action(() => { // 更新 UI 控件 // ... })); } ``` 在上述代码中,btnStart_Click 方法是 UI 线程中的事件处理程序,当用户点击按钮时会创建一个后台线程来执行任务。DoWork 方法是后台线程的入口点,它执行耗时的任务,并使用 Invoke 方法来更新 UI 控件。这样可以保证 UI 线程不会被阻塞,同时也可以让用户获得更好的体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值