我们都知道,windows是一个抢占式的多线程环境,因此系统可能会在任意时刻暂停一个线程,切换到另一个线程让新的线程继续执行。请看这段代码: // Interlocked.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include <windows.h> #include <iostream> #include <process.h> using namespace std; DWORD WINAPI ThreadFunc1(PVOID pvParam); DWORD WINAPI ThreadFunc2(PVOID pvParam); long g_x = 0; int _tmain(int argc, _TCHAR* argv[]) { //创建线程1,并挂起 HANDLE hThread1 = (HANDLE)_beginthreadex(NULL,0,(unsigned int(_stdcall *)(void *)) ThreadFunc1,NULL ,0 ,0); HANDLE hThread2 = (HANDLE)_beginthreadex(NULL,0,(unsigned int(_stdcall *)(void *)) ThreadFunc2,NULL,0,0); cout<<"主线程"<<endl; Sleep(10000); cout<<g_x<<endl; CloseHandle(hThread1); CloasHandle(hThread2); system("pause"); return 0; } DWORD WINAPI ThreadFunc1(PVOID pvParam) { for(int i = 0; i<10000000;++i) {