std :: thread使用一个核心?

时间:2015-07-07 04:23:20

标签: multithreading c++11

尝试将VS 2013 C ++与std :: threads一起使用。此测试对象打印,然后睡眠,然后打印。创建了一个向量并调用它们,以便一次最多运行四个。

它的工作原理是四个线程同时运行但不知何故它似乎都在八个核心之一中执行。

在其他地方声明了std :: atomic。

int _tmain(int argc, _TCHAR* argv[])
{
std::vector< testclass<int> > _vector;
std::vector< testclass<int> >::iterator tc;
int i;

srand( (unsigned)time(NULL) );
threads = 0;
for (i = 0; i < 50; i++) {
    _vector.push_back(testclass<int>(i));
}
tc = _vector.begin();
while (tc != _vector.end()) {
    if (threads < FOUR_THREADS) {
        i = rand() % 5000;
        tc._Ptr->_value = i;
        std::thread t(&testclass<int>::calc, tc._Ptr);
        t.detach();
        tc++;
        threads++;
    }
}

return 0;
}

0 个答案:

没有答案