自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(6)
  • 收藏
  • 关注

转载 C#ManualResetEvent

只提供二元(信号/非信号)的同步机制,并不能传递更为复杂的状态信息。一个线程可以等待一个事件,而另一个线程可以设置或重置该事件。不会在释放一个等待的线程后自动重置为非信号状态。当事件转换为信号状态时,所有等待该事件的线程都将继续执行。类的 API 非常简单直接,只需要几个方法就能实现线程间的有效同步。需要手动重置,这可能会导致错误,例如如果忘记重置事件,那么所有调用。允许多个等待的线程在事件被设为信号状态后同时继续进行。在释放一个等待的线程后会自动回到非信号状态。:在事件为非信号状态时,调用。

2023-12-05 17:27:11 316

转载 彻底理解AutoResetEvent

此时,调用 `WaitOne` 方法时,如果 AutoResetEvent 处于无信号状态,则线程将被阻塞,直到调用 `Set` 方法将其置为有信号状态。这样就会又很多个线程等待同一个信号,由于AutoResetEvent是自动恢复无信号的,所以只有一个等待线程会被唤醒并继续执行,那这一个线程肯定是最先调用WaitOnce的地方,因为一旦调用了WaitOnce并通过了,AutoResetEvent自动恢复无信号。其他的当然得继续等咯。信号同步的原理就是等待信号,有信号状态直接过,无信号就等。

2023-12-05 09:56:00 148

转载 C#中 Monitor和Lock的区别

2023-11-30 18:58:07 38

原创 同步编程、异步编程、多线程

在我们学习的传统单线程编程中,程序的运行是同步的(同步不意味着所有步骤同时运行,而是指步骤在一个控制流序列中按顺序执行)。而异步的概念则是不保证同步的概念,也就是说,一个异步过程的执行将不再与原有的序列有顺序关系。异步(Asynchronous, async)是与同步(Synchronous, sync)相对的概念。以上是关于异步的概念的解释,接下来我们通俗地解释一下异步:异步就是从主线程发射一个子线程来完成任务。简单来理解就是:同步按你的代码顺序执行,异步不按照代码顺序执行,异步的执行效率更高。

2023-11-29 12:24:06 373 1

转载 c# Thread、ThreadPool、Task有什么区别,什么时候用,以及Task的使用

Task 背后的实现也是使用了线程池线程,但它的性能优于ThreadPoll,因为它使用的不是线程池的全局队列,而是本地队列,使线程之间的资源竞争减少。ContinueWith 方法可以在一个任务完成的时候发起一个新任务,这种方式天然就支持了任务的完成通知:可以在新任务中获取原任务的结果值。Task甚至进一步优化了后台线程池的调度,加快了线程的处理速度。Task还支持任务工厂的概念。Task的任务控制:Task最吸引人的地方就是他的任务控制了,你可以很好的控制task的执行顺序,让多个task有序的工作。

2023-11-29 11:53:35 181 1

转载 并发与并行的区别(超级通俗易懂)

并发(concurrency):指在同一时刻只能有一条指令执行,但多个进程指令被快速的轮换执行,使得在宏观上具有多个进程同时执行的效果,但在微观上并不是同时执行的,只是把时间分成若干段,使多个进程快速交替的执行。并行在多处理器系统中存在,而并发可以在单处理器和多处理器系统中都存在,并发能够在单处理器系统中存在是因为并发是并行的假象,并行要求程序能够同时执行多个操作,而并发只是要求程序假装同时执行多个操作(每个小时间片执行一个操作,多个操作快速切换执行)。所以无论从微观还是从宏观来看,二者都是一起执行的。

2023-11-23 11:44:01 50

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除