c++ - 如何安全地重写可执行文件的汇编线程?
问题描述
我的目的是使以线程安全的方式重写函数启动程序集(.text)成为可能。问题是我不能确定在重写函数时其他线程不在函数的开头。我写了大约 5 个函数的第一个字节。此操作在整个过程生命周期中执行。
我有几个想法如何做到这一点:
- 暂停其他线程。不错。但是只在windows上是可以的。在linux上没有这样的东西。您必须使用信号来实现它,这会使操作复杂化并且难以调试。由于它是一种频繁的操作,因此它也会对性能造成很大的损害。
- 使用线程优先级。写入线程被授予更高的优先级,所以其他人应该等待它。据我了解,它只能在单核平台上有所帮助。
我的问题是还有其他方法可以做到这一点。
解决方案
推荐阅读
- javascript - 运行 node.js 应用程序的端口错误
- python - VSCode 说无法更新 Ubuntu Linux 上的首选项也找不到 pip
- css - 列表中的缩放看起来比祖先元素大
- python - 在 Python 中分离箱线图
- wordpress - WordPress 网站显示“工作和日子。8 月 1 日至 12 月 1 日”。当我在 Google 上搜索该网站时
- ios - 删除 Ios ar 对象的触摸手势(旋转/平移)
- asp.net-core - 如何在自定义 TagHelper 中生成 Razor 页面 url
- android - Firebase 图片标签中的过滤类别
- c# - 如何将 ASP.NET MVC 上的搜索结果打印成 pdf?
- cassandra - LEAK DETECTED:在引用被垃圾收集之前未释放