導航:首頁 > 源碼編譯 > 多線程源碼怎麼樣

多線程源碼怎麼樣

發布時間:2023-03-16 04:33:49

Ⅰ 求VB6多線程源碼

方法 1 : CreateThread

不用多說,萬變不離其宗,這是 Win32 內創建線程的唯一系統方法,以下介紹的多線程創建方式雖然不直

接接觸這個 Win32 APi,但系統也是通過他創建的。

方法 2 : TimerSetEvent

這個函數是 Win32 系統的一個高精度計時器函數,通過調用這個函數,系統會創建一個新的線程,讓Timer

回調函數中的代碼運行在這個新線程中。

方法 3 : SHCreateThread

很多人應該沒滑沖罩見過這個函數,這是 shlwapi.dll 的一個導出函數,這個函數看字面也能理解是個創建多線

程的函數,而且。。。 他是基於對象操作的多線程函數,也就是說他能夠穩定的運行一些用上面2種方法創

建,但不能穩定運行的代碼。至少這個函數在 IDE 的環境下表現的中規中矩! 使用方法可查 API-GUIDE

方法 4 : 想起來了, CreateRemoteThread

創建遠程線程,經測試一點也不穩定,根本沒法說下去了,還不如直接調用 CreateThread

但,做為一種線程的創建方法,還是希望信鬧能夠熟悉一下,如果不用VB寫代碼,要寫跨進程線程,這是一個簡單易

行的辦法,否則只能繼續SetWindowHook了,熟悉匯編指令的還可以遠程分配內存寫硬編碼執行

方法 5 : 簡單說下 ActiveX 方式的多線程

論壇裡面有用這種方法實現的穩定多線程,代碼雖好,但我卻不會用,在倡導綠色軟體的今天,為了一個多線

程,而注冊表裡面又要多點xx,不好。。而且卸載麻煩。 用 ActiveX 創建線程與其他方式創建的線程最重

要的地方要主義,任何VB函數的調用最好都建立在新線程中新初始化的對象基礎上執行,不要跨對象調用,

而 ActiveX 的安全線程本身也正是利用了這點,不知道研究 ActiveX 的老大們有沒注意,利用他特性實

現的多線程,是初始化的判塵一個新的線程,而這個線程中初始化的對象則是整個工程。很大的資源浪費,而且有

時候還不好控制,不是你想要的效果。總之一句話,新線程中要自己初始化新的對象而且最好不要用實例繼承

方法 6 : 我的想法

記得以前 CSDN 中有人做過一個代碼,通過函數地址抓取函數內的機器碼,如果能夠知道VB何時已將代碼進

行了機器碼的轉換,然後抓取這些代碼放到數組中執行,那應該是非常穩定的。這純屬娛樂的想法,雖然能夠

實現,但有點過分了,除非是 VB 多線程的狂熱者,否則我想不該花太多力氣研究這個。

方法 7 : 非同步

論壇中很多人問,timer控制項的事件中代碼是怎麼運行的。其實這就是非同步,對於單核CPU多線程的執行方式

與非同步簡直無異。而最重要的是,VB 中用非同步實現代碼執行是安全的。其實非同步從大家開始Win GUI編程

就開始接觸了。例如窗體的消息循環中就經常會以非同步的方式執行,1個消息正在執行的時候,另外的消息又

被執行了,也許這樣說會覺得有些亂,稍侯解釋。這個帖子內容要說的內容就完了,下一個帖子裡面有個我

忘了什麼時候寫的代碼,以那個代碼為例,介紹應用非同步。

Ⅱ 如何利用多線程,實現處理圖像的同時,實時感應滑鼠的移動,求c語言源代碼!


你這個問題可是超過200分的啊,
這個往大了說是一個比較復雜的設計方案。

實際上C語言是沒有多線程的概念的,但是我們可以通過Task來實現多任務。

簡單的說,可以採取以下方案:
定義一個主Task,將其置為常駐Task,用以進行Task調度和Task的啟動/終了和交互的管理。
定義一個Task優先順序列表,用優先順序來作為Task調度和管理的基礎。
定義一個共享域,和相應的事件分發/廣播/傳遞的管理機制,由主Task來實現各Task間的事件傳遞。
定義3個List,實現Active,Ready,Dead的Task的管理和調度。
定義各普通Task,包含Task基本信息:Task的棧指針,Task情報,Task存儲空間大埋差鍵小,Task的優先順序,Task的事件列表(定義可以接收/發送的事件,以及可以排隊的事件的個數),以及如果需要的話可以定義Task的從屬(父子)關系。

另外還有幾個注意點:
1. 通過C的臨界域(critical section)結合PV操作來實現某些Task的原子性處理要求。彎巧
2. 通過Signal來實現中斷和再開
3. 如果需要處理中斷和再開的話,一定要注意現場保護
4. 同優先順序的Task可以通過時間片輪循的方式進行多任務實現

暫時就想到這么多,有不明白慶春的通過消息進一步交流吧:)

Ⅲ 誰給個易語言的簡單的post多線程的源碼,越簡單越好,我想學下

用模塊吧 精易模塊 普通填表類

Ⅳ 多線程庫的源碼在哪,為啥在glibc裡面沒有

Linux下的glic庫的源碼鏈接:
http://ftp.gnu.org/gnu/glibc/,你可以下載最新版本的glibc-2.24.tar.gz這個壓縮文件,在Windows系統下直接用WinRAR解壓即可,如果在Linux系統下用命令行解壓的話,命令如下:tar -xzvf glibc-2.24.tar.gz。

Ⅳ 多線程和單線程有啥區別

1 、任務管理及調度:
RT-Thread - 32/256可選優先順序搶占式調度,線兄弊程數不限,相同優先順序線程時間片輪轉調度;支持動態創建/銷毀線程。
uCOS - 256優先順序搶占式調度,不允許相同陪納優先順序任務存在
2、 同步/通信機制:
RT-Thread - 支持semaphore, mutex, mailbox, message queue, event。mailbox可存儲多條消息,任務等待可按優先順序進行排隊。
uCOS -semaphore,mutex, mailbox, message queue, event。mailbox只能存放1條消息
3、內存管理:
RT-Thread -固定分區內存管理,小內存系統動態內存管理,大內存系統SLAB內存管理
uCOS - 固定大小內存塊管理
4、定時器:
RT-Thread - 掛接到系統OS定時器的硬定時器
uCOS - 只能使用OSTimeDly進行時間間隔處理
5、中斷嵌套:
RT-Thread - 允許
uCOS - 允許
6、源碼許可證:
RT-Thread - 遵循GPLv2+許可證。羨亂族可用於商業產品(只需要註明使用了RT-Thread)
uCOS - 商業收費

Ⅵ 求個按鍵精靈多線程的源碼

Dimenvi,缺早n
n=0
Randomize
Fori=97To105
線程ID=BeginThread(按鍵)
Delay100
Next
Do
LoopUntiln>=1000
ExitScript
Sub按鍵
a=i
Do
KeyPressa,1
n=n+1
神滲伏瞎雀Loop
EndSub

Ⅶ iOS詳解多線程(實現篇——pThread)

上一節中,我們探究了OC中重要的實現多線程的方法——NSOperation。本節中,我們了解一下不常用的一種創建多線程的方式——pThread。

相關鏈接:
NSOpreation鏈接: iOS詳解多線程(實現篇——NSOperation)
GCD鏈接: iOS詳解多線程(實現篇——GCD)
NSThread鏈接: 詳解多線程(實扒派現篇——NSThread)
多線程概念篇鏈接: 詳解多線程(概念篇——進程、線程以及多線程原理)

源碼鏈接: https://github.com/weiman152/Multithreading.git

1.NSThread(OC)
2.GCD(C語言)
3.NSOperation(OC)

5.其他實現多線程方法

pThread並不是OC特有的實現多線程的方肢鍵法,而是Unix、Linux還有Windows都通用的一種實現多線程的方式。
pThread的全稱是POSIX threads,是線程的 POSIX 標准。
pThread是C語言的,在iOS的開發中極少使用。

使用之前,記得先導入頭文件

運行結果:

從結果可以看出,開啟了新的線程,執行任務。

pthread_create() 創建一個線程
pthread_exit() 終止當前線程
pthread_cancel() 中斷另外一個線程的運行
pthread_join() 阻塞當前的線程,直到另外一個線程運行結束
pthread_attr_init() 初始化線程的屬性
pthread_attr_setdetachstate() 設置脫離狀態的屬性(決定這個線程在終歷此巧止時是否可以被結合)
pthread_attr_getdetachstate() 獲取脫離狀態的屬性
pthread_attr_destroy() 刪除線程的屬性
pthread_kill() 向線程發送一個信號

由於pThread我們基本用不到,所以不再做深入研究。

Ⅷ 什麼是java多線程編程

一、 什麼是多線程:

我們現在所使用操作系統都是多任務操作系統(早期使用的DOS操作系統為單任務操作系統),多任務操作指在同一時刻可以同時做多件事(可以同時執行多個程序)。

Ⅸ 請高手幫忙解釋下這多線程的源代碼,每句注釋下 #include <stdio.h> #include <stdlib.h>

首先這是一個生產者和消費者問題。

生產者procer負責產生數據,然後通過put操作將數據放到緩沖區buf中。

消費者consumer負責顯示數據,通過get操作從緩沖區buf中讀取數據。

========》

先看主函數main(),

生產者和消費者分別用兩個線程來實現。

主函數中的pthread_create()函數就是用來創建這兩個線程的。

開始定義了兩個變數th_a,th_b用來記錄這兩個線程的線程號。

線程的程序體分別是procer,consumer。

接下來的pthread_join用來等待兩個線程結束。因為如果不等待,main函數的主線程會立即結束,而兩個子線程還來不及完全執行。

=======》

下面來分別看procer,consumer這兩個線程。

procer循環一百次,每次調用put往buffer中放數據,最後放一個OVER;

consumer循環用get從buffer中讀到數據並列印,直到讀取的數據位OVER數據時結束。

=======》

我們再分別來看put操作和get操作。

由於put和get都要訪問buf,buf就是一個臨界資源,為了解決這個臨界資源,在使用buf之前,要對它加鎖。

pthread_mutex_lock(b->lock)一個為信號量加鎖的函數。每個信號量只能加鎖一次(我說的可能不準確),如果執行該函數的時候,參數中的信號量已經被加鎖,則該函數阻塞,直到信號量被解鎖才繼續執行。這樣就能保證信號量所保護的臨界資源能夠被互斥的訪問。

structprodcons{

intbuffer[BUFFER_SIZE];/*這個就是循環緩沖區*/

pthread_mutex_tlock;/*這個是信號量,用來保證對緩沖區的互斥訪問*/

intreadpos,writepos;/*這兩個成員分別表示讀位置和寫位置*/

pthread_cond_tnotempty;/*這是表示緩沖區「非空」的條件信號量*/

pthread_cond_tnotfull;/*這是表示緩沖區「非滿」的條件信號量*/

};

buf是一個循環的緩沖區,我們先來看緩沖區為空和滿這兩種狀態時,讀、寫標記(readpos,writepos)的位置。

緩沖區為空時,readpos和writepos指在同一位置;

換從去為滿時,writepos位置的下一個位置就是readpos。

/*put負責把數據放到緩沖區*/

voidput(structprodcons*b,intdata)

{

//首先對互斥信號量進行加鎖

pthread_mutex_lock(&b->lock);

/*這里就是判斷緩沖區有沒有滿,用writepos+1與readpos比較,可以參考附圖。

*因為是循環緩沖區,所以要模BUFFER_SIZE。

*如果緩沖區滿,將在while中等待,直到緩沖區非滿,再繼續執行。

*/

while((b->writepos+1)%BUFFER_SIZE==b->readpos){

printf("waitfornotfull ");

//如果已經滿了,則等待消費者讀取了數據後發出「非滿」信號。

pthread_cond_wait(&b->notfull,&b->lock);

}

/*當緩沖區非滿時,將數據寫入緩沖區中writepos對應的位置*/

b->buffer[b->writepos]=data;

//更新writepos到下一個位置

b->writepos++;

//循環利用緩沖區空間,如果超過了最大值,則從頭開始。

if(b->writepos>=BUFFER_SIZE)b->writepos=0;

/*向消費者發送信號,告訴消費者緩沖取非空*/

pthread_cond_signal(&b->notempty);

//對互斥信號進行解鎖。

pthread_mutex_unlock(&b->lock);

}

/*--------------------------------------------------------*/

/*get負責從緩沖區中讀取數據*/

intget(structprodcons*b)

{

intdata;

//對互斥信號量進行加鎖

pthread_mutex_lock(&b->lock);

/*判斷緩沖區是否為空,為空則等待*/

while(b->writepos==b->readpos){

printf("waitfornotempty ");

pthread_cond_wait(&b->notempty,&b->lock);

}

/*讀取readpos位置的數據*/

data=b->buffer[b->readpos];

//更新readpos到下一個位置。

b->readpos++;

//循環利用緩沖區,回撥指針

if(b->readpos>=BUFFER_SIZE)b->readpos=0;

/*發信號給生產者,緩沖區非滿,可以放數據了*/

pthread_cond_signal(&b->notfull);

//對互斥信號量進行解鎖

pthread_mutex_unlock(&b->lock);

returndata;

}

Ⅹ 易語言,有源碼,幫忙弄下,多線程怎麼一直處理下去,我只能處理十個線程

很容易,把代碼中的10改成你想的執行次數就可以,有問題請追問

閱讀全文

與多線程源碼怎麼樣相關的資料

熱點內容
pdf數字不顯示 瀏覽:890
convertwordtopdf 瀏覽:253
程序編譯基本單位 瀏覽:23
python分析圖片角度 瀏覽:64
阿里雲伺服器能復制數據嗎 瀏覽:562
python拼音轉換文字 瀏覽:563
動畫遺傳演算法 瀏覽:63
php如何解析xml文件 瀏覽:702
如何改變appstore的語言 瀏覽:462
javahtmlxml 瀏覽:34
單片機啟動文件 瀏覽:811
橙app如何開啟聊天 瀏覽:899
訪問伺服器公網地址 瀏覽:666
pdf列印底色去掉 瀏覽:464
java快遞介面 瀏覽:397
哪個app可以教新爸爸 瀏覽:212
如何查看伺服器系統版本信息 瀏覽:525
成都市土地出讓金演算法 瀏覽:704
鋼筋加密標記 瀏覽:578
ps中擴展功能在文件夾的什麼位置 瀏覽:905