Open For-Elyisa opened 1 year ago
I write code like this:
struct thv { long l[1024]; }; void thcall(vector<thv> l) { usleep(10 * 1000); } int main(int, char **) { ThreadPool thpool(12); vector<thv> v; vector<future<void>> res; for (int i = 0; i < 1000; i++) { v.push_back(thv()); } for (int i = 0; i < 1000; i++) { res.push_back(thpool.enqueue(thcall, v)); usleep(10 * 1000); } for (auto &it : res) { it.get(); } vector<thv>().swap(v); cout << v.capacity() << endl; cout << "----------end----------" << endl; std::getchar(); }
when terminal printf
0 ----------end----------
I notice this demo used about 8G memory.
I run this code in ubuntu using ARM cpu and compiled with gcc 9.4.0. what coused this problem? It had serious impacts on my program.
Thanks very much
std::future res = task->get_future(); // will malloc memory to store function return val;
Can I work on this if no one is working? Thanks!
void thcall(vector<thv> l)
Every time when you call thecall will copy a v.
thecall
v
void thcall(vector<thv>& l)
Use reference instead could help.
I write code like this:
when terminal printf
I notice this demo used about 8G memory.
I run this code in ubuntu using ARM cpu and compiled with gcc 9.4.0. what coused this problem? It had serious impacts on my program.
Thanks very much