1.多线程逻辑
#include"接口.hpp"
DWORD WINAPI ThreadFunction(LPVOID lpParam) {
void* memory = malloc(100);//ConcurrentAlloc(100);
char* d = (char*)memory;
//for (int i = 0; i < 5; i++)
//{
// d[i] = 'a';
//}
//for (int i = 0; i < 5; i++)
//{
// cout << d[i] << endl;
//}
free(memory);
// ConcurrentFree(memory);
return 0;
}
int main() {
size_t begin = clock();
const int numThreads = 100;
HANDLE threads[numThreads];
DWORD threadIds[numThreads];
for (int i = 0; i < numThreads; ++i) {
threads[i] = CreateThread(
nullptr,
0,
ThreadFunction,
nullptr,
0,
&threadIds[i]
);
if (threads[i] == nullptr) {
std::cerr << "Failed to create thread!" << std::endl;
return 1;
}
}
WaitForMultipleObjects(numThreads, threads, TRUE, INFINITE);
for (int i = 0; i < numThreads; ++i) {
CloseHandle(threads[i]);
}
size_t end = clock();
cout << end - begin;
return 0;
}
打印测试(线程同步测试与安全测试)
可以发现,两线程安全创建且内存正常申请,没有出现内存泄漏问题,打印不同证明二者的同步关系
比较malloc,free,new delete和我们的申请接口的效率
我们的接口:2
malloc和free组:3
new和delete组:3
测试成功,接下来会做进一步优化