dll中的多线程
Multithreading in a dll
我想让两个函数在dll中同时在后台运行,所以我在dllmain中执行了CreateThread
,但它不起作用。有什么建议或帮助吗?
#include <Windows.h>
#include "main.h"
#include <iostream>
void main()
{
AllocConsole();
freopen("CONOUT$", "w", stdout);
std::cout << "Press enter?";
while (true) {
if (GetAsyncKeyState(0x0D))
Trainer(); Sleep(50);
}
}
BOOL WINAPI DllMain(HINSTANCE hinstDll, DWORD Reason, LPVOID Reserved) {
switch (Reason) {
case DLL_PROCESS_ATTACH:
MessageBox(0, "DllInject", "Injected", 0);
CreateThread(0, 0, (LPTHREAD_START_ROUTINE)main, NULL, 0, NULL);
break;
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}
功能示例
void artemis()
{
while (true)
{
Sleep(300);
ammoArtemis = 1;
}
}
您不应该从DllMain调用CreateThread,因为这可能会导致死锁。可以从DllMain中调用的函数集非常有限。有关详细信息,请阅读文章动态链接库最佳实践。
在创建线程之前,请禁用DLL 的线程通知
DisableThreadLibraryCalls(hinstDll)
这应该有助于打破僵局。
您的线程似乎是从名为main的函数开始的。然而,线程启动例程需要使用WINAPI调用约定,并且应该接受一个参数。
DWORD WINAPI main(PVOID Parameter)
您可以通过第四个参数来提供参数值。
相关文章:
- 在C++中使用cURL和多线程
- 多线程双缓冲区
- 为什么我的多线程作业队列崩溃
- 在main()之外初始化std::vector会导致性能下降(多线程)
- 试图创建一个多线程程序来查找0-100000000之间的总素数
- 为什么一个向量上的多线程操作很慢
- 学习多线程C++:添加线程不会使执行速度更快,即使它看起来应该
- 全局变量 多读取器 一个写入器多线程安全?
- boost::文件系统::recursive_directory_iterator多线程安全
- 如何阻止TensorFlow的多线程
- 如何在多线程中正确使用unique_ptr进行多态性?
- QT插槽未在多线程DLL中执行
- 从多线程.net应用程序调用的本机dll中的tbb存在问题
- Visual Studio使用多线程DLL发布应用程序文件
- 导入 DLL 的工作方式不同(VS2003 到 VS2010,多线程到多线程 DLL)
- 使用多线程调试 DLL (/MDd) C 运行时库生成静态 Opencv 库
- 多线程DLL中的Cryptopp,VS2010
- 如何使托管 (clr) 多线程 C++ .dll
- dll中的多线程
- 从 Java 的多线程并行调用非线程安全的 DLL 函数