亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

以下情況,請問我該怎么修改呢?有了解的大佬么?

以下情況,請問我該怎么修改呢?有了解的大佬么?

C++
一只斗牛犬 2023-03-03 17:13:47
#include <windows.h> //包含頭文件#include <stdio.h>DWORD WINAPI myfun1( //聲明線程函數LPVOID lpParameter  );const int stop=1; //stop 為一const int go_on=2; //開始為2int record=2;  static HANDLE hmutex;int a=0; //定義全局變量aint main(){  HANDLE h1;  //定義線程句柄h1=::CreateThread(NULL,0,myfun1,NULL,0,NULL);printf("haha\n");//創建線程1::CloseHandle(h1);  Sleep(1000);//關閉線程句柄對象  return 0;}DWORD WINAPI myfun1(LPVOID lpParameter) //線程函數1{ while(1){::WaitForSingleObject(hmutex,INFINITE); //請求事件對象//變量自加a++; //線程睡眠1秒printf("qiubai\n");::ReleaseMutex(hmutex);  if(a>0)break;//釋放互斥對象句柄}return 0; //線程}
查看完整描述

1 回答

?
慕容708150

TA貢獻1831條經驗 獲得超4個贊

你應該建立兩個進程, 這樣才可以觀察, 還有你的 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;}
查看完整回答
反對 回復 2023-03-06
  • 1 回答
  • 0 關注
  • 81 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號