本帖最后由 VisualEleven 于 2014-03-12 11:21:47 编辑

解决方案 »

  1.   

    因为你的CPU是多核的而孙鑫用的是单核的.......................
      

  2.   

    首先,要做这个测试,必须使用多线程C库,如果是VC6建立的工程,默认是单线程的C库,需要改一下。原则:使用多线程C库(无论是静态链接还是动态链接)总是好的。其次,在多线程C库环境下,要注意线程安全性
    例如printf("%s%s%s\n", "AAA", "BBB", "CCC");
    此一句永远不会被其他printf分隔开,因为printf内部做了互斥例如cout<<"aaabbbccc\n";
    此一句在VC6上依然存在被分割的可能,在VS2008和以上的平台中不会被分割例如cout<<"aaa"<<"bbb"<<"ccc"<<endl;(分四段输出)
    此一句在所有vs平台上都存在被分割的可能
      

  3.   

    /*
     *  @file  : TestThreadStdOut.cpp
     *  @author: Shilyx
     *  @date  : 2014-03-17 09:26:53.977
     *  @note  : Getnerated by SlxTemplates
     */#include <Windows.h>
    #include <stdio.h>
    #pragma warning(disable: 4786)
    #include <iostream>
    #include <vector>using namespace std;BOOL g_bPrintFMode = FALSE;
    enum MODE
    {
        MODE_PRINTF,
        MODE_COUT_SINGLE,
        MODE_COUT_MULTI,
        MODE_MAX_VALUE,
    };static MODE g_mode;DWORD CALLBACK OutputProc(LPVOID lpParam)
    {
        WaitForSingleObject(lpParam, INFINITE);    int i = 0;
        int count = 5;    switch (g_mode)
        {
        case MODE_PRINTF:
            for (i = 0; i < count; i += 1)
            {
                printf("%s%s%s\n", "AAA", "BBB", "CCC");
            }
            break;    case MODE_COUT_SINGLE:
            for (i = 0; i < count * 2; i += 1)
            {
                cout<<"aaabbbccc\n";
            }
            break;    case MODE_COUT_MULTI:
            for (i = 0; i < count * 2; i += 1)
            {
                cout<<"xxx"<<"yyy"<<"zzz"<<endl;
            }
            break;    case MODE_MAX_VALUE:
        default:
            break;
        }    return 0;
    }int main(int argc, char *argv[])
    {
        for (g_mode = MODE_PRINTF; g_mode < MODE_MAX_VALUE; (int &)g_mode += 1)
        {
            int i = 0;
            vector<HANDLE> vectorThreads;
            HANDLE hStartEvent = CreateEvent(NULL, TRUE, FALSE, NULL);        for (i = 0; i < 8; i += 1)
            {
                vectorThreads.push_back(CreateThread(NULL, 0, OutputProc, hStartEvent, 0, NULL));
            }        SetEvent(hStartEvent);
            WaitForMultipleObjects(vectorThreads.size(), &*vectorThreads.begin(), TRUE, INFINITE);        // todo: close handles in vectorThreads
        }    return 0;
    }vc6输出:
    AAABBBCCC
    AAABBBCCC
    AAABBBCCC
    AAABBBCCC
    AAABBBCCC
    AAABBBCCC
    AAABBBCCC
    AAABBBCCC
    AAABBBCCC
    AAABBBCCC
    AAABBBCCC
    AAABBBCCC
    AAABBBCCC
    AAABBBCCC
    AAABBBCCC
    AAABBBCCC
    AAABBBCCC
    AAABBBCCC
    AAABBBCCC
    AAABBBCCC
    AAABBBCCC
    AAABBBCCC
    AAABBBCCC
    AAABBBCCC
    AAABBBCCC
    AAABBBCCC
    AAABBBCCC
    AAABBBCCC
    AAABBBCCC
    AAABBBCCC
    AAABBBCCC
    AAABBBCCC
    AAABBBCCC
    AAABBBCCC
    AAABBBCCC
    AAABBBCCC
    AAABBBCCC
    AAABBBCCC
    AAABBBCCC
    AAABBBCCC
    aaaaaaaaaaaabaaaaaaabbbccc
    aaabbbccc
    aaabbbccc
    aabbabaaabbbccc
    aaabbbccc
    aaabbabbbcbbbbbbcbccccc
    aaabbccccc
    aaabbbcccbbbccc
    aaabc
    aaabbbccccc
    aaabbcc
    aaabbbccc
    aabbcc
    aaababbcc
    aaabbbcccab
    aaabbbccc
    aaabbbccc
    aaabbbbbcbcc
    aaabccc
    aaabbbc
    aabbccc
    aaabbbcccc
    aaabbbccc
    aacc
    aabcbbccabbbccccccc
    aaab
    aaaabbbc
    aa
    aaaabbbccbbbbbccbbccc
    aac
    aac
    aaabbbabbccbccc
    aaabbbccc
    aaabbbcabbabbbccc
    aaabbcc
    aaabbbccc
    aaabbbcccc
    aaabbbbccc
    aacc
    c
    aaabbccc
    aaabbbccc
    aaabbbccc
    aaab
    aaabbbcbccc
    aaabbbccc
    ccbbabbbbbc
    aaabcccc
    aaabbbbbbccccc
    aaabbcccccbbcccaaccc
    aaabbbccc
    aaabbbccc
    aaabbbccc
    aaa
    aabbbccc
    aaabbbccc
    aabbbccc
    abbbccc
    aaabbbccc
    aa
    aaabbbccc
    aaabbbcacc
    aaabbbccc
    abbbccc
    aaabbbccc
    aaabbbccc
    aaabbbccc
    aaabbbccc
    aaabbbccc
    bccc
    aaabbbccc
    aaabbbccc
    aaabbbccc
    aaabbbccc
    aaabbbccc
    abbbccc
    aaabbbccc
    aaabbbccc
    xxxxxxxyxxxyyyzzzxxxyyyzzz
    xxxyyyzzz
    xxxyyxxxyyyzzz
    xxxyyyzzz
    xyyyzzz
    yzzz
    xyyyzzz
    xxxyyyzzz
    xxxyyyzzz
    xxxyyyzzz
    xxxyyyzzzxxxyyyyzzz
    xxxyyyzzz
    xxxyyyzzz
    xxxyyyzzz
    xxxyyyzzz
    xxxyyyzzz
    yzzz
    xxxyyyzzz
    xxxyyyzzz
    xxxyyyzzz
    xxxyyyzzz
    xxxxxyyxxxyyyzzz
    xyyyzzz
    xxxyyyzzz
    yzzz
    xxxxxxxyyxxxxxyxyyyxxxyxyyyzzz
    xxxyyyzzz
    xxxyyyzzz
    xxxxxxxxyxyyyzzz
    xxxyyyzzz
    xxxyyyzyyzyyyyxyzzyzzz
    xxxyyyzzz
    z
    yyzzz
    zz
    zzz
    xxxyyyzzz
    xxxyyyzzz
    xxxyyyzzz
    zz
    xxxyyyzzz
    xxxxxxxyyzxxxyyyzzzxyyyzzz
    xyyyzzz
    yzyyxxxyyyzzz
    xxxyyyzzz
    xxxyyyzzz
    xxxyyyzzz
    zz
    xxxyyyzzz
    xxxxxxyyxxxxxyyyzzzxxxyyyzzz
    zz
    xyyyzzz
    yzzz
    yyyzzz
    xxxyyyzzz
    xxxyyyzzz
    xxxyyxxxxxxxxyzyzzxyxyxyzzxyz
    xxxyyyzzz
    xxxyyyzyy
    xxxyyzzzzyyyyyyzz
    xxzzzyzz
    xxxyzz
    zz
    xxxyyyzzz
    xxxyyyzzz
    xxxyyyz
    z
    xxxyyyzzxyyyzzz
    zzz
    xxxyyyzzyyzzz
    xxz
    xxz
    xyyxyyzyyzzzz
    xxz
    xyyyzzz
    xxxyyyzzzvs2010输出
    AAABBBCCC
    AAABBBCCC
    AAABBBCCC
    AAABBBCCC
    AAABBBCCC
    AAABBBCCC
    AAABBBCCC
    AAABBBCCC
    AAABBBCCC
    AAABBBCCC
    AAABBBCCC
    AAABBBCCC
    AAABBBCCC
    AAABBBCCC
    AAABBBCCC
    AAABBBCCC
    AAABBBCCC
    AAABBBCCC
    AAABBBCCC
    AAABBBCCC
    AAABBBCCC
    AAABBBCCC
    AAABBBCCC
    AAABBBCCC
    AAABBBCCC
    AAABBBCCC
    AAABBBCCC
    AAABBBCCC
    AAABBBCCC
    AAABBBCCC
    AAABBBCCC
    AAABBBCCC
    AAABBBCCC
    AAABBBCCC
    AAABBBCCC
    AAABBBCCC
    AAABBBCCC
    AAABBBCCC
    AAABBBCCC
    AAABBBCCC
    aaabbbccc
    aaabbbccc
    aaabbbccc
    aaabbbccc
    aaabbbccc
    aaabbbccc
    aaabbbccc
    aaabbbccc
    aaabbbccc
    aaabbbccc
    aaabbbccc
    aaabbbccc
    aaabbbccc
    aaabbbccc
    aaabbbccc
    aaabbbccc
    aaabbbccc
    aaabbbccc
    aaabbbccc
    aaabbbccc
    aaabbbccc
    aaabbbccc
    aaabbbccc
    aaabbbccc
    aaabbbccc
    aaabbbccc
    aaabbbccc
    aaabbbccc
    aaabbbccc
    aaabbbccc
    aaabbbccc
    aaabbbccc
    aaabbbccc
    aaabbbccc
    aaabbbccc
    aaabbbccc
    aaabbbccc
    aaabbbccc
    aaabbbccc
    aaabbbccc
    aaabbbccc
    aaabbbccc
    aaabbbccc
    aaabbbccc
    aaabbbccc
    aaabbbccc
    aaabbbccc
    aaabbbccc
    aaabbbccc
    aaabbbccc
    aaabbbccc
    aaabbbccc
    aaabbbccc
    aaabbbccc
    aaabbbccc
    aaabbbccc
    aaabbbccc
    aaabbbccc
    aaabbbccc
    aaabbbccc
    aaabbbccc
    aaabbbccc
    aaabbbccc
    aaabbbccc
    aaabbbccc
    aaabbbccc
    aaabbbccc
    aaabbbccc
    aaabbbccc
    aaabbbccc
    aaabbbccc
    aaabbbccc
    aaabbbccc
    aaabbbccc
    aaabbbccc
    aaabbbccc
    aaabbbccc
    aaabbbccc
    aaabbbccc
    aaabbbccc
    xxxyyyzzz
    xxxyyyzzz
    xxxyyyzzz
    xxxyyyzzz
    xxxyyyzzz
    xxxyyyzzz
    xxxyyyzzz
    xxxyyyzzz
    xxxyyyzzz
    xxxyyyzzz
    xxxyyyzzz
    xxxyyyzzz
    xxxyyyzzz
    xxxyyyzzz
    xxxyyyzzz
    xxxyyyzzz
    xxxyyyzzz
    xxxyyyzzz
    xxxyyyzzz
    xxxyyyzzz
    xxxyyyzzz
    xxxyyyzzz
    xxxyyyzzz
    xxxyyyzzz
    xxxyyyzzz
    xxxyyyzzz
    xxxyyyzzz
    xxxyyyzzz
    xxxyyyzzz
    xxxyyyzzz
    xxxyyyzzz
    xxxyyyzzz
    xxxyyyzzzxxxyyyzzz
    xxxyyyzzz
    xxxyyyzzz
    xxxyyyzzz
    xxxyyyzzz
    xxxyyyzzz
    xxxyyyzzz
    xxxyyyzzz
    xxxyyyxxxyyyzzz
    xxxyyyzzz
    xxxyyyzzz
    xxxyyyzzz
    xxxyyyzzz
    xxxyyyzzz
    xxxyyyzzz
    xxxyyyzzz
    xxxyyyzzz
    xxxyyyzzzzzz
    xxxyyyzzz
    xxxyyyzzz
    xxxyyyzzz
    xxxyyy
    xxxyyyzzz
    xxxyyyzzz
    xxxyyyzzz
    xxxyyyzzz
    xxxyyyzzz
    xxxyyyzzz
    xxxyyyzzz
    xxxyyyzzz
    xxxyyyzzz
    xxxyyyzzz
    xxxyyyzzz
    xxxyyyzzz
    xxxyyyzzz
    xxxyyyzzzzzz
    xxxyyyzzz
    xxxyyyzzz
    xxxyyyzzz
    xxxyyyzzz
    xxxyyyzzz
    xxxyyyzzz
    xxxyyyzzz
    xxxyyyzzz
    xxxyyyzzz
    xxxyyyzzz