使用锁关键字和c# 5.0的新的异步功能
本文关键字:异步 功能 关键字 | 更新日期: 2023-09-27 18:10:03
是否仍然有必要使用锁关键字对资源,如SQL紧凑数据库的方法调用async (asyncctpllibrary .dll)?正如我从安德斯的谈话中所理解的那样,异步处理都发生在同一个线程中,所以它们不应该是需要的,或者我错了吗?目前我在网上找不到这方面的任何信息。
谢谢
AFAIK async基于TPL和Tasks -所以它们不会每次都在同一个线程上运行(或者继续在同一个线程上运行),是的,你必须在设计时考虑并发性。Async只是帮助你以一种更好的方式把这些碎片组合在一起。
需要明确的是:你的方法中的所有内容(如果只启动一次)将一次在一个线程中运行,但是如果你共享资源,你将不得不考虑锁或其他同步方法,就像你过去一直做的那样。
如果你可以使用不可变数据——这样你就可以把所有这些都减到最小,但是你总是要记住你的进程将运行在许多线程上(想到UI调度)。