PeekMessage、WaitForSingleObject、PostThreadMessage多執行緒使用示例
#include <windows.h> #include <cstdio> #include <process.h> #define MY_MSG WM_USER+100 const int MAX_INFO_SIZE = 20; HANDLE hStartEvent; // thread start event // thread function unsigned __stdcall fun(void *param) { printf("thread fun start\n"); MSG msg; PeekMessage(&msg, NULL, WM_USER, WM_USER, PM_NOREMOVE); if(!SetEvent(hStartEvent)) //set thread start event { printf("set start event failed,errno:%d/n",::GetLastError()); return 1; } printf("新執行緒已經啟動正等待接收資料\r\n"); while(true) { if(GetMessage(&msg,0,0,0)) //get msg from message queue { switch(msg.message) { case MY_MSG: char * pInfo = (char *)msg.wParam; printf("recv %s\r\n",pInfo); delete[] pInfo; break; } } }; return 0; } int main() { HANDLE hThread,hThread1; unsigned nThreadID,nThreadID1; hStartEvent = ::CreateEvent(0,FALSE,FALSE,0); //create thread start event if(hStartEvent == 0) { printf("create start event failed,errno:%d\r\n",::GetLastError()); return 1; } //start thread hThread = (HANDLE)_beginthreadex( NULL, 0, &fun, NULL, 0, &nThreadID ); if(hThread == 0) { printf("start thread failed,errno:%d/n",::GetLastError()); CloseHandle(hStartEvent); return 1; } printf("啟動了新執行緒\r\n"); //wait thread start event to avoid PostThreadMessage return errno:1444 ::WaitForSingleObject(hStartEvent,INFINITE); CloseHandle(hStartEvent); ::Sleep(1000); int count = 0; while(true) { char* pInfo = new char[MAX_INFO_SIZE]; //create dynamic msg sprintf(pInfo,"msg_%d",++count); if(!PostThreadMessage(nThreadID,MY_MSG,(WPARAM)pInfo,0))//post thread msg { printf("post message failed,errno:%d\r\n",::GetLastError()); delete[] pInfo; } ::Sleep(1000); } CloseHandle(hThread); return 0; }
相關推薦
PeekMessage、WaitForSingleObject、PostThreadMessage多執行緒使用示例
#include <windows.h> #include <cstdio> #include <process.h> #define MY_MSG WM_USER+100 const int MAX_INFO_SIZE = 20; HA
[原創]一款小巧、靈活的Java多執行緒爬蟲框架(AiPa)
1.作品簡介 AiPa 是一款小巧,靈活,擴充套件性高的多執行緒爬蟲框架。 AiPa 依賴當下最簡單的HTML解析器Jsoup。 AiPa 只需要使用者提供網址集合,即可在多執行緒下自動爬取,並對一些異常進行處理。 2.下載安裝 AiPa是一個小巧的、只有390KB的jar包。 下載該Jar包匯入到你的專案中
AiPa — 小巧、靈活的 Java 多執行緒爬蟲框架
1.框架簡介 AiPa 是一款小巧,靈活,擴充套件性高的多執行緒爬蟲框架。 AiPa 依賴當下最簡單的HTML解析器Jsoup。 AiPa 只需要使用者提供網址集合,即可在多執行緒下自動爬取,並對一些異常進行處理。 2.下載安裝 AiPa是一個小巧的、只有390KB
IOS網路、多執行緒、shareSDK-使用EDG多執行緒技術下載圖片
使用EDG中央排程多執行緒技術實現圖片的非同步下載 // // ViewController.swift // Dome2test // // Created by 郭文亮 on 2018/11
【本人禿頂程式設計師】你分得清分散式、高併發與多執行緒嗎?
←←←←←←←←←←←← 快,點關注! 當提起這三個詞的時候,是不是很多人都認為分散式=高併發=多執行緒? 當面試官問到高併發系統可以採用哪些手段來解決,或者被問到分散式系統如何解決一致性的問題,是不是一臉懵逼? 確實,在一開始接觸的時候,不少人都會將三者混淆,誤以為所謂的分散式
併發、並行、高併發和多執行緒
1.併發和並行的區別 併發:當有多個執行緒在操作時,如果系統只有一個CPU,把CPU執行時間劃分成若干個時間段,分配給各個執行緒執行,在一個時間段的執行緒程式碼執行時,其它執行緒處於掛起狀態。這種方式我們稱之為併發(Concurrent)。併發=間隔發生 並行:當系
如何分清分散式、高併發與多執行緒嗎?
當提起這三個詞的時候,是不是很多人都認為分散式=高併發=多執行緒? 當面試官問到高併發系統可以採用哪些手段來解決,或者被問到分散式系統如何解決一致性的問題,是不是一臉懵逼? 確實,在一開始接觸的時候,不少人都會將三者混淆,誤以為所謂的分散式高併發的
C++11 併發程式設計基礎(一):併發、並行與C++多執行緒
正文 C++11標準在標準庫中為多執行緒提供了元件,這意味著使用C++編寫與平臺無關的多執行緒程式成為可能,而C++程式的可移植性也得到了有力的保證。另外,併發程式設計可提高應用的效能,這對對效能錙銖必較的C++程式設計師來說是值得關注的。 回到頂部 1. 何為併發 併發指的是兩個或多個獨立的活動在同
qt匯出、操作excel(多執行緒)
使用QAxObject在多執行緒下進行excel操作,將原來固定格式的文字檔案,通過解析之後寫入到excel中。 效果圖 多執行緒使用 Worker *pWorker = new Worker(); connect(pWorker, SIGNAL(err
42、併發程式設計之多執行緒理論篇
### 一 什麼是執行緒 在傳統作業系統中,每個程序有一個地址空間,而且預設就有一個控制執行緒 執行緒顧名思義,就是一條流水線工作的過程,一條流水線必須屬於一個車間,一個車間的工作過程是一個程序 車間負責把資源整合到一起,是一個資源單位,而一個車間內至少有一個流水線 流水線的工作需要電源,電源就相當於
43、併發程式設計之多執行緒實操篇
### 一 threading模組介紹 multiprocessing模組完全模仿了threading模組的介面,二者在使用層面,有很大的相似性,因而不再詳細介紹 [官網連結:https://docs.python.org/3/library/threading.html?highlight=thread
簡單多執行緒示例
#include<Windows.h> #include<iostream> using namespace std; DWORD WINAPI Fun1Proc(LPVOID lpParameter);//定義執行緒入口函式(規定格式) DWORD WINAP
【Arduino】一份簡單的(偽)多執行緒示例 - print "Hello World" 和 echo 功能
Arduino 上執行(偽)多執行緒示例 - print “Hello World” 和 echo 功能 Arduino 上執行(偽)多執行緒示例 - print "Hello World" 和 echo 功能 Demo Note
有返回值的多執行緒示例
問題場景 近期遇到用多執行緒優化程式,但是必須帶有返回值,實現Runnable介面不可行,檢視API,可以用Callable介面,試舉一例。 package thread; import java
多執行緒示例模仿
public class Test {public static void main(String[] args) {ThreadT tt = new ThreadT();Thread t1 = new Thread(tt, "t1");Thread t2 = new Th
Java多執行緒示例:4個售票員賣1000張火車票
//售票員 import java.util.Iterator; import java.util.Map; public class TicketSaler implements Runnable { private Map<String, Boolean&g
java多執行緒物件鎖、類鎖、同步機制詳解
1.在java多執行緒程式設計中物件鎖、類鎖、同步機制synchronized詳解: 物件鎖:在java中每個物件都有一個唯一的鎖,物件鎖用於物件例項方法或者一個物件例項上面的。 類鎖:是用於一個類靜態方法或者class物件的,一個
Python多執行緒、多程序和協程的例項講解
執行緒、程序和協程是什麼 執行緒、程序和協程的詳細概念解釋和原理剖析不是本文的重點,本文重點講述在Python中怎樣實際使用這三種東西 參考: 程序、執行緒、協程之概念理解 程序(Process)是計算機中的程式關於某資料集合上的一次執行活動,是系統進行資源分配和排程的基本單位,是作業系統結構的基礎。執
多執行緒2-synchronized、lock
1、什麼時候會出現執行緒安全問題? 在多執行緒程式設計中,可能出現多個執行緒同時訪問同一個資源,可以是:變數、物件、檔案、資料庫表等。此時就存在一個問題: 每個執行緒執行過程是不可控的,可能導致最終結果與實際期望結果不一致或者直接導致程式出錯。 如我們在第一篇部落格中出現的count--的問
Linux多執行緒程式設計---執行緒間同步(互斥鎖、條件變數、訊號量和讀寫鎖)
本篇博文轉自http://zhangxiaoya.github.io/2015/05/15/multi-thread-of-c-program-language-on-linux/ Linux下提供了多種方式來處理執行緒同步,最常用的是互斥鎖、條件變數、訊號量和讀寫鎖。 下面是思維導