多核CPU并不能让进程的多条线程同时执行

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Leave_RAINBOW/article/details/50879333
/*测试程序*/
#include<windows.h>
#include<iostream>
using namespace std;

DWORD WINAPI Thread2(
    LPVOID lpParameter
    );

int counter = 0;
int main() {

    HANDLE handle = NULL;
        handle = CreateThread(NULL, 0, Thread2, NULL, 0, NULL);
        CloseHandle(handle);
        while(counter++<1000)
        cout << "the main thread is running!   " <<endl;
    return 0;
}

DWORD WINAPI Thread2(
    LPVOID lpParameter
    ) {
    while(counter++<1000)
    cout << "the thred222222 is running!  " << endl;
    return 0;
}

上面的程序声明了一个新的线程Thread2,一个全局整形对象 counter,该变量的作用是作为计数器。
主函数中创建了一个新的线程,因为不再需要使用的它的句柄资源,所以Close掉,然后调用while循环,每循环一次输出“The main thread is called ”,并且counter++,证明进程现在执行的主线程。
Thread2线程中,也声明了一个while循环,每执行一次输出“The thread2 is called !”,counter++。
counter的作用,当主线程和thread2循环次数总和超过1000时,退出程序。
我的电脑CPU是多核的,刚刚开始学习多线程的时候,我就在非常在意课本上的一句话“如果计算机拥有多个CPU,线程就能真正意义上的同时运行了。”,当时课本发行的时候,CPU还没实现多核技术,是否现在多核能够实现所谓的多CPU功能呢?然后使用上面的程序测试。
执行结果
给论:主线程和thread2各自交换执行。

阅读更多

没有更多推荐了,返回首页