Linux多執行緒(三)執行緒清理函式
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
void *clean_up(void *arg)
{
char *s= (char *)arg;
printf("clean_func : %s\n",s);
return (void *)0;
}
void * th_fn(void *arg)
{
int execute=(int)arg;
pthread_cleanup_push(clean_up,"first func clean");
pthread_cleanup_push(clean_up,"second func clean");
printf("%lx thread is running\n",pthread_self());
pthread_exit((void*)0);//測試上面說的呼叫情況
pthread_cleanup_pop(execute);
pthread_cleanup_pop(execute);
return (void*)50;//你認為呼叫pthread_join獲取的返回值是50還是0呢???
}
int main(void)
{
int err;
pthread_t rabbit,turtle;
if((err=pthread_create(&rabbit,NULL,th_fn,(void *)1))!=0)
{
perror("pthread_create error");
}
if((err=pthread_create(&turtle,NULL,th_fn,(void *)1))!=0)
{
perror("pthread_create error");
相關推薦
Linux多執行緒(三)執行緒清理函式
#include <pthread.h>#include <stdio.h>#include <stdlib.h>#include <unistd.h>void *clean_up(void *arg){ char *s= (char *)arg; pr
Java 多執行緒(三)—— 執行緒的生命週期及方法
這篇部落格介紹執行緒的生命週期。 執行緒是一個動態執行的過程,它也有從建立到死亡的過程。 執行緒的幾種狀態 在 Thread 類中,有一個列舉內部類: 上面的資訊以圖片表示如下: 第一張圖: 第二張圖:把等待、計時等待、阻塞看成阻塞一個狀態了 1、新建狀態(ne
程序與執行緒(三)——執行緒的概念與實現
一 什麼是執行緒? 程序中的一條執行流程。 有了執行緒,程序發生了一系列的變化。首先是(1)資源管理,包括地址空間(程式碼段,資料段):程序就是由來管理資源的:地址空間,開啟的檔案,訪問的網路。(2)執行緒把程序的另一部分功能給拆出來了。 程序的執行功能,程序的
java 執行緒 (三)執行緒併發的安全性 同步程式碼塊
package cn.sasa.demo1; import java.util.concurrent.ExecutionException; public class ThreadDemo { public static void main(String[] args) th
Linux多工程式設計(三)---exec函式族及其基礎實驗
exec函式族 函式族說明 fork() 函式用於建立一個新的子程序,該子程序幾乎複製了父程序的全部內容,但是,這個新建立的子程序如何執行呢?exec 函式族就提供了一個在程序中啟動另一個程式執行的方法。它可以根據指定的檔名或目錄名找到可執行檔案,並用它來取代原呼叫程序
java 多執行緒(三)
1、java 中任何物件都可以作為鎖 2、同步程式碼執行完成後會自動釋放掉 3、happend-before 4、類鎖和物件鎖相互幾乎不影響,不存在競爭 5、私有鎖和物件鎖不存在競爭,相互不影響 6、一個執行緒一旦呼叫wait()就釋放了所以的鎖,一個等待執行緒被notify()喚醒,不會立刻進入喚
深入理解Java多執行緒(三)
關於java多執行緒的概念以及基本用法:java多執行緒基礎 3, 執行緒間通訊 執行緒在作業系統中是獨立的個體,經過特殊的處理,執行緒間可以實現通訊,進而成為一個整體,提高CPU利用率 3.1,等待/通知機制 等待:wait()方法作用是使當前執
Python多執行緒(三)
引言 在前面的章節我們介紹了使用執行緒和不使使用執行緒的對比例項,並且引入了鎖的概念,這節課我們來了解一下更高階的threading模組。 threading 在threading模組中不
多執行緒(三)Future和Callable
package a; import java.util.concurrent.Callable; import java.util.concurrent.ExecutionException; import java.util.concurrent.ExecutorService; import
JAVA多執行緒(三)
多執行緒三 執行緒優先順序 使用者執行緒與守護執行緒 執行緒同步 執行緒通訊 用到的程式碼後面會新增上去,如果急需要的話,評論留下郵箱 執行緒優先順序 (1)每個執行緒都有優先順序,優先順序越高,獲
JAVA基礎23-多執行緒(三)【synchronized,ReentranLock,volatile、死鎖】
一、同步 大多數多執行緒應用中,兩個或兩個以上的執行緒需要共享對同一資料的存取,此時出現多個程式交替處理該資料,從而導致資料出現訛誤。 9-1.Synchronized關鍵字 &nb
多程序與多執行緒(三)--多程序 or 多執行緒(轉)
(轉自http://programmerdigest.cn/2010/08/1096.html,其中的實驗資料重新做過測試,在語言上也有所修改)在Unix上程式設計採用多執行緒還是多程序的爭執由來已久,這種爭執最常見到在B/S通訊中服務端併發技術 的選型上,比如WEB伺服器技術中,Apache是採用多程序的(
理解多執行緒(三)--互斥量
std::mutex mutex就是互斥量的意思,在c++中使用互斥量需要包含#include 引入互斥量 之前瞭解了執行緒訪問公有資料是不安全的,所以使用互斥量來防治執行緒不安全的操作。 互斥量就是一個變數,只有兩種狀態,加鎖和解鎖。每一個互斥量管理一個公有資料,一個執行緒訪問
Java多執行緒(三)、執行緒同步
在之前,已經學習到了執行緒的建立和狀態控制,但是每個執行緒之間幾乎都沒有什麼太大的聯絡。可是有的時候,可能存在多個執行緒多同一個資料進行操作,這樣,可能就會引用各種奇怪的問題。現在就來學習多執行緒對資料訪問的控制吧。 由於同一程序的多個執行緒共享同一片儲存空間,在帶來方便
多執行緒(三) 實現執行緒範圍內模組之間共享資料及執行緒間資料獨立(ThreadLocal)
ThreadLocal為解決多執行緒程式的併發問題提供了一種新的思路。JDK 1.2的版本中就提供java.lang.ThreadLocal,使用這個工具類可以很簡潔地編寫出優美的多執行緒程式,ThreadLocal並不是一個Thread,而是Thread的區域
初見Java多執行緒(三、執行緒的阻塞狀態)
1. 阻止執行緒執行 對於執行緒的阻塞狀態,考慮一下三個方面,不考慮IO阻塞的情況: 睡眠; 等待; 因為需要一個物件的鎖定而被阻塞。 2. 睡眠 Thread.sleep(long millis); Thread.sleep(long mill
linux下C語言多執行緒(二)執行緒的私有資料
二. 建立和登出 Posix定義了兩個API分別用來建立和登出TSD: int pthread_key_create(pthread_key_t *key, void (*destr_function) (void *)); 該函式從TSD池中分配一項,將其值賦給key供以後訪問使用。如果destr_fu
linux下C語言多執行緒(一)執行緒的建立與取消
#include <pthread.h> int pthread_create(pthread_t *restrict tidp, const pthread_attr_t *restrict attr, void
[Java 多執行緒技術](三)執行緒的建立和啟動
本篇部落格根據《瘋狂java講義》和《java多執行緒程式設計核心技術》整理的筆記 Java使用Thread類代表執行緒,所有的執行緒物件都必須是Thread類或子類的例項,每個執行緒的作用是完成一定的任務,實際上就是執行一段程式流(一段順序執行的
iOS 多執行緒(三)NSOperation
NSOperation NSOperation是蘋果封裝的一套多執行緒的東西,不像GCD是純C語言的,這個是OC的。但相比較之下GCD會更快一些,但本質上NSOPeration是多GDC的封裝。 NSOperation相對於GCD: NSOperation擁有更多