linux C 的库有定义关于多线程的函数,这里我们介绍一下C++ 关于thread 的库和一些接口。
下面是一个是一个C++多线程的应用,创建多个线程,进行同事申请内存和释放内存操作。线程function 采用的是lamada 函数。
constexpr auto number = 128U;
std::vector<std::thread> testThreads;
for (size_t j = 0; j < 50; j++)
{
for (size_t i = 0; i < number; i++)
{
testThreads.emplace_back(
[this, i]()
{
uint8_t* testPtr =
allocate(1000);
free(testPtr);
});
}
for (auto& th : testThreads)
{
th.join();
}
testThreads.clear();
}
上面这段代码,首先会创建50*128 个线程,每个线程都会执行allocate 1000字节大小的堆内存,然后free 释放申请的内存。