![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
线程
文章平均质量分 61
文章包含自己对线程的理解,可能存在错误,往大佬们指正
薄荷撞~可乐
这个作者很懒,什么都没留下…
展开
-
Invoke和BeginInvoke的区别
本文导读:BeginInvoke() 调用时,当前线程会启用线程池中的某个线程来执行此方法,当前线程不被阻塞,继续运行后面的代码, Invoke() 调用时,会阻塞当前线程,等到 Invoke() 方法返回才继续执行后面的代码,而这两个方法中执行的是一个委托。3、BeginInvoke() 调用时,当前线程会启用线程池中的某个线程来执行此方法,BeginInvoke不会阻止当前主线程的运行,而是等当前主线程做完事情之后再执行BeginInvoke中的代码内容,表现出“异步”的概念。C# 代码 复制。原创 2024-01-03 17:02:56 · 590 阅读 · 2 评论 -
C#线程安全——ConcurrentDictionary线程安全哈希表
使用Dictionary添加相同的键时,运行代码的时候会报错,为了避免在运行中出错,可以选用ConcurrentDictionary来进行判断。以上两个地址可以更好的辅助了解ConcurrentDictionary。可用于判断是否已存在同样的键。原创 2024-01-08 11:43:01 · 655 阅读 · 0 评论 -
Task.WaitAll和Task.WaitAny();
简单的说就是需要等带全部线程完成任务再继续 阻塞当前线程,等着全部任务完成;测试的时候,消耗资源不能太小,要不然不能看出来效果;消耗资源小,对于cpu只不过是一瞬间,最好是让(老板执行 和多线程执行之间有点时间差),这样在测试的时候可以看到。这里借用一个小案例来测试:一个项目需要多个人工作,最后再汇总给一个人进行测试;执行上面的代码,结果如下图左图,会发现老板执行会被先执行,这显然不符合要求的案例,需要先多人工作再汇总。阻塞当前线程,等着任意一个任务完成,也可以限时等待;原创 2024-01-08 11:06:49 · 1126 阅读 · 0 评论 -
多线程的初步使用和扩展封装
如果由一个任务需要开启一个线程来执行,然后线程执行完毕以后,需要另外做点别的事情该如何解决呢?ThreadStart thread线程开启要执行的;Action actionCallback之后要做的。有人会想到用 线程阻塞JOin完成,这样做可以达到效果,但会出现卡界面的现象,所以就有了新的思路方法:把两个任务都存放到一个委托李=里面。通过更改调用的顺序,参数的顺序,发现,无论如何变化,原创 2023-07-08 21:18:33 · 86 阅读 · 0 评论 -
多线程常用信号:ManualResetEvent,AutoResetEvent
我们初始化了一个值为False的ManualResetEvent对象,这意味着所有调用WaitOne放的线程将被阻塞,直到有线程调用了 Set() 方法。如果某个线程调用WaitOnef方法,则当信号处于发送状态时,线程会得到信号,继续向下执行。可见,没有信号时,WaitOne()后面的语句都不执行(被阻塞),当Set()释放信号后,所有阻塞的线程都开始继续执行。3.WaitOne等待信号的发送(在需要等待信号的线程中调用WaitOne方法,该方法会阻塞当前线程,直到收到信号);原创 2024-01-03 14:33:10 · 658 阅读 · 0 评论 -
多线程Thread(线程工具API ,创建多线程)
3.实例化线程是不会主动启动,一点要记得启动线程。2.线程状态,是否激活,是否还后台线程(原创 2023-07-06 16:00:48 · 121 阅读 · 0 评论