慕容708150
你应该建立两个进程, 这样才可以观察, 还有你的 haha 是在 main 函数里面, 只执行一次, 不会输出多次, qiubai, 在进程中, 但是 if (a>0) 也就是执行一次之后这个进程虽然没有关闭但是, 已经不可能进入输出的程序了.#include <windows.h>#include <stdio.h>DWORD WINAPI myfun1(LPVOID lpParameter);DWORD WINAPI myfun2(LPVOID lpParameter);static HANDLE hmutex, hmutex2;int main(){ HANDLE h1; h1=::CreateThread(NULL,0,myfun1,NULL,0,NULL); HANDLE h2; h2=::CreateThread(NULL,0,myfun2,NULL,0,NULL); printf("Start:\n"); Sleep(5000); ::CloseHandle(h1); ::CloseHandle(h2); return 0;}DWORD WINAPI myfun1(LPVOID lpParameter){ int a = 0; while (1) { ::WaitForSingleObject(hmutex,INFINITE); a++; printf("qiubai\n"); ::ReleaseMutex(hmutex); Sleep(200); if(a > 15) break; } return 0;}DWORD WINAPI myfun2(LPVOID lpParameter){ int b = 0; while (1) { ::WaitForSingleObject(hmutex2,INFINITE); b++; printf("haha\n"); ::ReleaseMutex(hmutex2); Sleep(300); if(b > 10) break; } return 0;}