完整源代码:
#include <iostream>
#include <thread>
#include <Windows.h>
#pragma warning(disable:4996)
using namespace std;
void __declspec(dllexport) CalculateFunc(
int
count)
{
index
=
0
;
for
(
i
; i < count; i
+
)
printf(
"i=%d, %d...\n"
, i,
index);
Sleep(
1000
);
}
"Threader Over...\n"
g_indexRef
void myThread(
__asm
push eax
mov eax, esp
sub eax,
0x10
mov g_indexRef, eax
push count
call CalculateFunc
add esp,
4
pop eax
void CalculateFuncAsync()
std::thread thread(myThread,
100
thread.join();
/
等待线程结束
main()
std::thread thread(CalculateFuncAsync);
3000
if
(g_indexRef)
*
((
)g_indexRef)
"Main Over...\n"
return
[培训]《安卓高级研修班(网课)》月薪三万计划
mudebug 曲线救国了兄弟。我们都是一个hook走天下
我确实也想过Hook,但现在这种方式是可以不用修改源DLL文件的一种相对较为温和的方式。
拍拖 如果目标DLL支持多线程安全调用,为什么不把任务分成多份,然后外面创建多个线程并发调用那个函数。每个线程每次计算一小份,会不会比你这个解决方案还容易点。
嗯,其实这个我也想过。因为原接口是一个计算机器加工时间的功能。里面的因子有起点速度,加速度等一系列物理关系,比较难拆分。如果只是一个简单的线性关系,这个思路确实来得更好的。上面的接口实现只是一个简单的模拟,不是完全贴切。