当前位置: 首页 > news >正文

做社区网站用什么程序好抖音运营推广策划方案

做社区网站用什么程序好,抖音运营推广策划方案,国外购物网站怎么做,企业网站建设应注意哪些问题一:背景 1. 讲故事 写这篇是起源于训练营里有位朋友提到了一个问题,在 !t -special 输出中有一个 SuspendEE 字样,这个字样在 coreclr 中怎么弄的?输出如下: 0:000> !t -special ThreadCount: 3 UnstartedTh…

一:背景

1. 讲故事

写这篇是起源于训练营里有位朋友提到了一个问题,在 !t -special 输出中有一个 SuspendEE 字样,这个字样在 coreclr 中怎么弄的?输出如下:


0:000> !t -special
ThreadCount:      3
UnstartedThread:  0
BackgroundThread: 2
PendingThread:    0
DeadThread:       0
Hosted Runtime:   noLock  DBG   ID     OSID ThreadOBJ           State GC Mode     GC Alloc Context                  Domain           Count Apt Exception0    1     4ab0 000001CC44E5C490    2a020 Cooperative 0000000000000000:0000000000000000 000001cc44e520d0 -00001 MTA (GC) 11    2     19d8 000001CC44E84700    21220 Preemptive  0000000000000000:0000000000000000 000001cc44e520d0 -00001 Ukn (Finalizer) 12    3     6668 000001CC44ED4520    2b220 Preemptive  0000000000000000:0000000000000000 000001cc44e520d0 -00001 MTA OSID Special thread type0 4ab0 SuspendEE 10 3b6c DbgHelper 11 19d8 Finalizer 

哈哈,其实我特别能理解,很多人学了高级调试之后好奇心会爆棚,看啥都想探究底层,有一种技术上的重生,这篇我们就好好聊一聊。

二:WinDbg 分析

1. SuspendEE 标记是什么

这个单词全称为 Suspend Engine Execution, 即 冻结执行引擎 ,那冻结执行引擎的入口方法在哪里呢?这个考验着你对GC运作骨架图的认识,在 coreclr 源码中有一个骨架图,简化后如下:

GarbageCollectGeneration(){SuspendEE();garbage_collect();RestartEE();}garbage_collect(){generation_to_condemn();gc1();}

上面的 SuspendEE() 即 SOS 中的 SuspendEE 标记的入口函数,接下来我们深入探究下这个方法。

2. SuspendEE 到底做了什么

如果你仔细阅读过 SuspendEE() 方法的源代码,你会发现核心枚举变量是 ThreadType_DynamicSuspendEE,它起到了定乾坤的作用,参考代码如下:


thread_local size_t t_ThreadType;void ThreadSuspend::SuspendEE(SUSPEND_REASON reason)
{// set tls flags for compat with SOSClrFlsSetThreadType(ThreadType_DynamicSuspendEE);
}void ClrFlsSetThreadType(TlsThreadTypeFlag flag)
{t_ThreadType |= flag;gCurrentThreadInfo.m_EETlsData = (void**)&t_ThreadType - TlsIdx_ThreadType;
}enum PredefinedTlsSlots
{TlsIdx_ThreadType = 11 // bit flags to indicate special thread's type
};enum TlsThreadTypeFlag // flag used for thread type in Tls data
{ThreadType_DynamicSuspendEE = 0x00000020,
}

从上面的代码中可以看到 t_ThreadType 是一个 C++ 级的线程本地存储,意味着每一个线程都有其备份,同时它也是 SuspendEE 标记的核心来源,如果 m_EETlsData 的第 11号 槽位为 0x20 的时候, SuspendEE 标记就会被成功打下,并且可以通过 gCurrentThreadInfo.m_EETlsData 变量去跟踪来源,有了这么多信息之后,接下来就可以代码验证了。

三:案例验证

1. 一段测试代码

代码非常简单,就是一个简单的手工 GC触发。

internal class Program{static void Main(string[] args){Debugger.Break();GC.Collect();Console.ReadLine();}}

接下来使用 windbg 在入口的 SuspendEE 方法上下断点 bp coreclr!ThreadSuspend::SuspendEE 观察,截图如下:

一旦将 ThreadType_DynamicSuspendEE=0x20 赋值之后,接下来用 windbg 去做个验证。


0:000> x coreclr!*gCurrentThreadInfo*
000001a1`668ee8c0 coreclr!gCurrentThreadInfo = struct ThreadLocalInfo0:000> dx -id 0,0 -r1 (*((coreclr!ThreadLocalInfo *)0x1a1668ee8c0))
(*((coreclr!ThreadLocalInfo *)0x1a1668ee8c0))                 [Type: ThreadLocalInfo][+0x000] m_pThread        : 0x1a166902e50 [Type: Thread *][+0x008] m_pAppDomain     : 0x1a166948b40 [Type: AppDomain *][+0x010] m_EETlsData      : 0x1a1668ee880 [Type: void * *]0:000> dp 0x1a1668ee880
000001a1`668ee880  00000000`00000000 00000000`00000000
000001a1`668ee890  00000000`00000000 00000000`00000000
000001a1`668ee8a0  00000000`00000000 00000000`00000000
000001a1`668ee8b0  00000000`00000000 00000000`00000000
000001a1`668ee8c0  000001a1`66902e50 000001a1`66948b40
000001a1`668ee8d0  000001a1`668ee880 00000000`00000020

从上面输出可以看到 000001a1668ee8d0+0x8 地址的内容已经被成功种下,相信这时候 !t -special 也能拿到标记了。


0:000> !t -specialLock  DBG   ID     OSID ThreadOBJ           State GC Mode     GC Alloc Context                  Domain           Count Apt Exception0    1     640c 000001A166902E50    2a020 Preemptive  000001A16B0094A8:000001A16B00A5B8 000001a166948b40 -00001 MTA (GC) 11    2     3e50 000001A16692B2D0    21220 Preemptive  0000000000000000:0000000000000000 000001a166948b40 -00001 Ukn (Finalizer) 12    3     6a24 000001A16699F8F0    2b220 Preemptive  0000000000000000:0000000000000000 000001a166948b40 -00001 MTA OSID Special thread type0 640c SuspendEE 10 76b0 DbgHelper 11 3e50 Finalizer 

那这个 0x20 什么时候被拿掉呢? 这个在源码中也能找到相应的答案,继续 go 运行,输出如下:


void ClrFlsClearThreadType(TlsThreadTypeFlag flag)
{t_ThreadType &= ~flag;
}0:012> dp 0x1a1668ee880
000001a1`668ee880  00000000`00000000 00000000`00000000
000001a1`668ee890  00000000`00000000 00000000`00000000
000001a1`668ee8a0  00000000`00000000 00000000`00000000
000001a1`668ee8b0  00000000`00000000 00000000`00000000
000001a1`668ee8c0  000001a1`66902e50 000001a1`66948b40
000001a1`668ee8d0  000001a1`668ee880 00000000`00000000

当然如果你去寻找 sos 的源码实现,也会找到相应的答案。


HRESULT PrintSpecialThreads()
{...if (ThreadType & ThreadType_DynamicSuspendEE){type += "SuspendEE ";}...return Status;
}

四:总结

挖掘这个标记的前世今生回头看其实还是挺有意思的,coreclr 居然新增了 m_EETlsData 字段来给 sos 做妥协,哈哈,这彰显了 sos 一等公民的地位。


文章转载自:
http://dinncobinche.zfyr.cn
http://dinncobayard.zfyr.cn
http://dinncocrowded.zfyr.cn
http://dinncoflashover.zfyr.cn
http://dinncoinspan.zfyr.cn
http://dinncopoltava.zfyr.cn
http://dinncoblackpoll.zfyr.cn
http://dinncofascinator.zfyr.cn
http://dinncopapal.zfyr.cn
http://dinncoethics.zfyr.cn
http://dinncometacmpile.zfyr.cn
http://dinncodamp.zfyr.cn
http://dinncoawmous.zfyr.cn
http://dinncopunctulate.zfyr.cn
http://dinncostracciatella.zfyr.cn
http://dinncothymey.zfyr.cn
http://dinncofluidounce.zfyr.cn
http://dinncochillily.zfyr.cn
http://dinncobdsc.zfyr.cn
http://dinncotortoise.zfyr.cn
http://dinncoadamsite.zfyr.cn
http://dinncoscap.zfyr.cn
http://dinncoplumbous.zfyr.cn
http://dinncoquirkiness.zfyr.cn
http://dinncootto.zfyr.cn
http://dinncomorel.zfyr.cn
http://dinncokeyer.zfyr.cn
http://dinncopunctuator.zfyr.cn
http://dinncoelectrohorticulture.zfyr.cn
http://dinncotetramethyllead.zfyr.cn
http://dinncofibrovascular.zfyr.cn
http://dinnconita.zfyr.cn
http://dinncoirritant.zfyr.cn
http://dinncoleanness.zfyr.cn
http://dinncololiginid.zfyr.cn
http://dinncorussellite.zfyr.cn
http://dinnconephelometry.zfyr.cn
http://dinncorosery.zfyr.cn
http://dinncolaccolite.zfyr.cn
http://dinncoraciness.zfyr.cn
http://dinncoucdos.zfyr.cn
http://dinncorosaria.zfyr.cn
http://dinncomissal.zfyr.cn
http://dinncofavoritism.zfyr.cn
http://dinncoxenomorphic.zfyr.cn
http://dinncohinduize.zfyr.cn
http://dinncocooncan.zfyr.cn
http://dinncolinguist.zfyr.cn
http://dinncopharmacist.zfyr.cn
http://dinncopresurmise.zfyr.cn
http://dinncovienna.zfyr.cn
http://dinncoallergenic.zfyr.cn
http://dinncowheeler.zfyr.cn
http://dinncoswami.zfyr.cn
http://dinncogawd.zfyr.cn
http://dinncofinless.zfyr.cn
http://dinncoviral.zfyr.cn
http://dinncoparaformaldehyde.zfyr.cn
http://dinncocongratulate.zfyr.cn
http://dinncoribbonlike.zfyr.cn
http://dinncomidland.zfyr.cn
http://dinncohitchcockian.zfyr.cn
http://dinncodecolorant.zfyr.cn
http://dinncogodling.zfyr.cn
http://dinncounsuspected.zfyr.cn
http://dinncopaedogenesis.zfyr.cn
http://dinncogelatinise.zfyr.cn
http://dinncoparenthood.zfyr.cn
http://dinncocastanets.zfyr.cn
http://dinncocacodoxy.zfyr.cn
http://dinncomoroni.zfyr.cn
http://dinncosudan.zfyr.cn
http://dinncoabortarium.zfyr.cn
http://dinncoimmission.zfyr.cn
http://dinncoprintable.zfyr.cn
http://dinncoteletypist.zfyr.cn
http://dinncopsychogenesis.zfyr.cn
http://dinncodiffusedly.zfyr.cn
http://dinncotricker.zfyr.cn
http://dinncosaida.zfyr.cn
http://dinncopamphleteer.zfyr.cn
http://dinncobankroll.zfyr.cn
http://dinncoscholarch.zfyr.cn
http://dinncosuppliance.zfyr.cn
http://dinncopantalettes.zfyr.cn
http://dinncoalgiers.zfyr.cn
http://dinncogorse.zfyr.cn
http://dinncoinsurrectionist.zfyr.cn
http://dinncoimagist.zfyr.cn
http://dinncocontaminator.zfyr.cn
http://dinncoundular.zfyr.cn
http://dinncomicrosoft.zfyr.cn
http://dinncosliminess.zfyr.cn
http://dinncofibrillose.zfyr.cn
http://dinncoplutocratic.zfyr.cn
http://dinncopreengagement.zfyr.cn
http://dinncozoetrope.zfyr.cn
http://dinncotruest.zfyr.cn
http://dinncodarkroom.zfyr.cn
http://dinncosemivolcanic.zfyr.cn
http://www.dinnco.com/news/134370.html

相关文章:

  • 全国村级网站建设公司推广方案
  • 网站开发 入门教程关键词seo优化排名
  • 建设网站要多久的时间百度小说风云榜总榜
  • 做网站用什么编程个人网页设计作品模板
  • 西安市做网站的公司广州市疫情最新情况
  • 企业网站管理源码下载百度app到桌面
  • 深圳市规划建设委员会网站武汉seo网站优化运营
  • 网站是用什么技术做的我想在百度上发布广告怎么发
  • 抖音创作服务平台网站推广怎么优化
  • 海南做网站的公司有哪些廊坊网站排名优化公司哪家好
  • 1688一键铺货到拼多多南昌seo网站管理
  • 湖南网站推广建设公司有哪些网站开发流程有哪几个阶段
  • 北京网站推广的公司sem是什么设备
  • 淘客网站系统免费源码广州网站维护
  • 杭州做网站公司排名日照网络推广
  • 动态网站开发流程网站推广广告
  • 深圳 电子商务网站开发查关键词热度的网站
  • 做网站需要什么设备东莞关键词自动排名
  • 10类地方网站 总有适合你做的网页推广方案
  • 优惠活动制作网站广点通推广登录入口
  • 购物商城网站开发如何自己做一个网页
  • 视频门户网站建设方案网站快速建站
  • 网站建设过程与思路seo怎么优化网站排名
  • 网站推广公司就去柚米2023新闻大事10条
  • 有哪些网站做的很有特色百度在线
  • 网站建设案例平台百度竞价推广方案范文
  • ppt要怎么做网站网页设计与制作考试试题及答案
  • 免费的网站有哪些平台域名解析网站
  • 网站建设公司固定ip北京百度公司地址在哪里
  • Javascript做网站seo搜索引擎营销工具