日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

多线程编程(9) - 认识等待函数 WaitForSingleObject

發布時間:2023/11/30 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 多线程编程(9) - 认识等待函数 WaitForSingleObject 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一下子跳到等待函數 WaitForSingleObject, 是因為下面的 Mutex、Semaphore、Event、WaitableTimer 等同步手段都要使用這個函數; 不過等待函數可不止 WaitForSingleObject 它一個, 但它最簡單.

function WaitForSingleObject(hHandle: THandle; {要等待的對象句柄}dwMilliseconds: DWORD {等待的時間, 單位是毫秒} ): DWORD; stdcall; {返回值如下:}WAIT_OBJECT_0 {等著了, 本例中是: 等的那個進程終于結束了} WAIT_TIMEOUT {等過了點(你指定的時間), 也沒等著} WAIT_ABANDONED {好不容易等著了, 但人家還是不讓咱執行; 這一般是互斥對象}//WaitForSingleObject 的第二個參數一般給常數值 INFINITE, 表示一直等下去, 死等.
WaitForSingleObject 等待什么? 在多線程里就是等待另一個線程的結束, 快來執行自己的代碼; 不過它可以等待的對象可不止線程; 這里先來一個等待另一個進程結束的例子, 運行效果圖:



代碼文件:
unit Unit1;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, StdCtrls;typeTForm1 = class(TForm)Button1: TButton;procedure Button1Click(Sender: TObject);end;varForm1: TForm1;implementation{$R *.dfm}varhProcess: THandle; {進程句柄}{等待一個指定句柄的進程什么時候結束} function MyThreadFun(p: Pointer): DWORD; stdcall; beginif WaitForSingleObject(hProcess, INFINITE) = WAIT_OBJECT_0 thenForm1.Text := Format('進程 %d 已關閉', [hProcess]);Result := 0; end;{啟動一個進程, 并建立新線程等待它的結束} procedure TForm1.Button1Click(Sender: TObject); varpInfo: TProcessInformation;sInfo: TStartupInfo;Path: array[0..MAX_PATH-1] of Char;ThreadID: DWORD; begin{先獲取記事本的路徑}GetSystemDirectory(Path, MAX_PATH);StrCat(Path, '\notepad.exe');{用 CreateProcess 打開記事本并獲取其進程句柄, 然后建立線程監視}FillChar(sInfo, SizeOf(sInfo), 0);if CreateProcess(Path, nil, nil, nil, False, 0, nil, nil, sInfo, pInfo) thenbeginhProcess := pInfo.hProcess; {獲取進程句柄}Text := Format('進程 %d 已啟動', [hProcess]); CreateThread(nil, 0, @MyThreadFun, nil, 0, ThreadID); {建立線程監視}end; end;end.
窗體文件:
object Form1: TForm1Left = 0Top = 0Caption = 'Form1'ClientHeight = 124ClientWidth = 241Color = clBtnFaceFont.Charset = DEFAULT_CHARSETFont.Color = clWindowTextFont.Height = -11Font.Name = 'Tahoma'Font.Style = []OldCreateOrder = FalsePixelsPerInch = 96TextHeight = 13object Button1: TButtonLeft = 88Top = 56Width = 75Height = 25Caption = 'Button1'TabOrder = 0OnClick = Button1Clickend end

轉載于:https://www.cnblogs.com/del/archive/2009/02/13/1390069.html

總結

以上是生活随笔為你收集整理的多线程编程(9) - 认识等待函数 WaitForSingleObject的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。