1. 程式人生 > >Linux多執行緒(三)執行緒清理函式

Linux多執行緒(三)執行緒清理函式

#include <pthread.h>
#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擁有更多