港湾风帆,微笑作文,红音ほたる
本文主要针对 gkarch 相关文章留作笔记,仅在原文基础上记录了自己的理解与摘抄部分片段。
遵循原作者的 cc 3.0 协议。
如果想要了解更加详细的文章信息内容,请访问下列地址进行学习。原文章地址:
thread.sleep(0)
会释放当前时间片,将 cpu 资源让出给其他线程。thread.sleep(0)
作用与 thread.yield()
作用一样,后者只会让出给当前核心的其他线程。thread.yield()
执行时会影响到程序的话,基本可以确定代码存在 bug。由于线程创建成本高昂(私有局部变量栈,每个线程默认占用 1 mb内存),所以一般都会使用线程池来进行线程的创建与回收。
线程池线程可以临时更改其优先级,在回收后会恢复默认状态。
开发人员可以通过 thread.currentthread.isthreadpoolthread
属性查询线程是否运行在线程池中。
通过查询 task.result 会导致当前线程阻塞,直到任务执行完成,如果发生错误,则会将异常包装到 aggregateexception
异常内进行抛出。
通过异步委托可以快速创建一个工作线程。
begininvoke()
方法,保存其 iactionresult
返回值。endinvoke()
方法,传递保存的 iactionresult
对象。class program { static void main(string[] args) { func<string, int> work = work; var result = work.("测试",null,null); console.writeline("获得结果"); work.endinvoke(result); } public static int work(string inputstr) { console.write(thread.currentthread); return inputstr.length; } }
注意:
上述代码在 .net core 平台上是无法运行的。
异步委托在调用 begininvoke()
的时候可以传入回调方法。
线程池可以通过 threadpool.setmaxthreads
与 threadpool.setminthreads
进行优化。
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
Net Core Web Api项目与在NginX下发布的方法
asp.net core3.1 引用的元包dll版本兼容性问题解决方案
IdentityServer4实现.Net Core API接口权限认证(快速入门)
ASP.NET Core MVC通过IViewLocationExpander扩展视图搜索路径的实现
网友评论