自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【c#异步学习笔记一:基本概念】

1.声明了async的方法就可以使用await来实现异步操作, await 时会释放当前线程,等所 await 的 Task 完成时会从线程池中申请新的线程继续执行 await 之后的代码,这本来是为了解决异步操作(比如IO操作)霸占线程实际却用不到线程的问题。2.因为异步方法的主要目的就是防止阻塞,而在异步方法中await前用的线程仍然是调用其的线程,故要在await之前避免阻塞,把可能阻塞的过程放在await后。异步默认使用线程池。异步编程通常是在新的线程或任务上来执行耗时事件长的函数,从而实现并发。

2023-11-08 12:36:02 212

原创 【c#线程学习笔记三:任务Task】

默认情况下,CLR会将任务运行在线程池线程上,这种线程适合执行短小的计算密集的任务。在线程池上运行一个长时间执行的任务并不会造成问题,但如果要并行运行多个长时间任务(特别是会造成阻塞的任务),则会对性能造成影响。②如果任务是计算密集型,则使用生产者/消费者队列可以控制这些任务造成的并发数量,避免出现线程和进程饥饿的问题。与线程的Join方法类型,调用Task的Wait方法可以阻塞当前方法,直到Task完成。如果在调用Task.Run时传入一个。Task默认使用线程池中的线程,它们都是后台线程。

2023-11-01 22:20:03 338

原创 【c#线程学习笔记二:线程的信号发送和工作线程更新UI】

当前台线程都执行结束时,后台线程随之终止,且后台线程执行栈上的finally语句块都无法执行,如果finally里执行的是清理逻辑等,那么可以在应用程序结束时等待后台线程汇合(Join)来避免前面的问题,不过需要注意的是需要指定一个超时时间,来舍弃那些无法按时完成的后台任务,防止应用程序无法正常关闭。该方法适用于一些工作量较少的线程,在计算密集,特别是带有用户界面的应用程序中,提高进程的优先级可能会抢占其他进程的执行时间,从而影响整个计算机的运行速度。线程间的消息通知即所谓的信号发送。

2023-10-31 21:22:28 120

原创 【c#线程学习笔记一:线程的基本使用和线程安全】

本文简单介绍了线程的基本使用和锁的简单使用,后续线程相关内容将在下一章学习。

2023-10-31 16:51:52 63

空空如也

空空如也

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

TA关注的人

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