zoukankan      html  css  js  c++  java
  • 为什么托管调试API不公开终结器线程?

    这是个公平的问题。部分原因是我们不相信人们能正确地使用它。我们发现人们问的主要原因是:


    1) 用户好奇心:

    用户只想在调试时知道这些琐事。当调试你认为是单线程应用程序时,你会在VSThreads窗口中看到6个线程,你想知道原因。请参阅Steve关于为调试器命名线程的帖子。不幸的是,CLR没有命名终结器线程。。我认为正确的解决方法是让终结器线程的命名和其他线程命名一样工作(并修复之前出现的任何perf问题);而不是添加一个特殊的调试器API来识别它。


    2) 解决错误:

    人们碰到了由终结器线程暴露的线程错误,然后希望能够识别终结器线程,以识别特殊情况下该错误的某些行为。终结器使用与其他线程相同的规则,因此线程错误(无论是在调试器中还是在常规托管应用程序中),发生在终结器线程上的线程错误也很可能发生在其他线程中。


    现在根据经验,终结器的行为与主线程不同。在运行终结器之前,终结器实际上不会出现在托管代码中,这可能在任何随机时间发生。这是因为托管调试器在实际运行托管代码之前不会看到线程。由于主线程立即运行托管main()函数,因此这不是问题。


    但是,其他线程的行为可能与终结器相同。通常,本机线程可以随时进入托管代码。在MC++中,线程可以在应用程序的本地部分启动,然后调用C++编译到IL,然后再进行管理。

  • 相关阅读:
    协议
    创建属性、属性标签、对象序列化
    JS中generater和箭头函数
    前端forEach在Array、map、set中的使用,weakset,weakmap
    更新最大内码,金蝶开发
    ERP,还需要WEB开发吗
    可读性太低的SQL语句
    事务,视图和索引
    简单子查询
    创建表并添加约束
  • 原文地址:https://www.cnblogs.com/yilang/p/13913332.html
Copyright © 2011-2022 走看看