linux 多執行緒的分離和可鏈結屬性

2022-05-01 07:24:10 字數 2043 閱讀 4652

#include "common.h"

/**這種情況一般用於某個多執行緒呼叫的模組使用前的初始化,但是無法判定哪個執行緒先執行,從而不知道把初始化**放在哪個執行緒合適的問題。

當然,我們一般的做法是把初始化函式放在main裡,建立執行緒之前來完成,但是如果我們的程式最終不是做成可執行程式,而是編譯成庫的形式,那麼main函式這種方式就沒法做到了。

**/static pthread_t thread_miccapture;

static pthread_t thread_audioplay;

static int pthread_run = 0;

static pthread_t thread_main;

static char* pusb_confi ;

static float i2c_buf = 0;

static sem_t mysem;

static int mtd_size = ;

typedef struct mutex_lock_tag // 後面加tag

mutex_lock_t; // 後面加_t

//int pthread_once(pthread_once_t *once_control, void (*init_routine) (void));

static pthread_once_t pthread_onces = pthread_once_init;

static mutex_lock_t* pdata = null;

static void * mic_capture_thread(void *arg);

static void * audio_play_thread(void *arg);

static clock_t mic_start = 0;

static clock_t audio_play_start = 0;

static double time_offset;

static unsigned int data = 1;

//static void prints(unsigned int data)

static void pthread_init(void)

static void prints(void)

else

sem_post(&mysem);

}static void * mic_capture_thread(void *arg)

else

//ret = pthread_once(&pthread_onces,pthread_init);

printf("ret is %d\n",ret);

while(pthread_run) }

static void * audio_play_thread(void *arg)

} }

}static int compare(const void* dataa,const void*datab)

void task_create(void)

; int ret = -1;

pthread_run = 1;

double totol = 0;

int i = 0;

pthread_attr_t mic_attr;

pthread_attr_t play_attr;

int pthread_att;

int data = ;

pdata = malloc(sizeof(mutex_lock_t));

if(pdata == null)

while(imutex);

sem_destroy(&mysem);

pthread_attr_destroy(&mic_attr); // 銷毀執行緒分離|可join屬性

pthread_attr_destroy(&play_attr); // 銷毀執行緒分離|可join屬性

free(pdata);

printf("pthread here\n");

} }

linux 執行緒的分離與可結合

介紹 在任何乙個時間點上,執行緒都是可分離或者可結合的。乙個可結合的執行緒能夠被其它執行緒收回其資源和殺 死。在其他執行緒 之前,他的儲存器資源 例如棧 是不釋放的。相反,乙個分離的執行緒是不能被其他 執行緒 或者殺死,他的儲存器資源在它終止時系統自動釋放。建立執行緒函式原型 int pthread...

Linux多執行緒,執行緒的分離與結合

2 執行緒的分離與結合 在任何乙個時間點上,執行緒是可結合的 joinable 或者是分離的 detached 乙個可結合的執行緒能夠被其他執行緒收回其資源和殺死 在被其他執行緒 之前,它的儲存器資源 如棧 是不釋放的。相反,乙個分離的執行緒是不能被其他執行緒 或殺死的,它的儲存器資源在它終止時由系...

Linux 多執行緒可重入函式

在單執行緒程式中,整個程式都是順序執行的,乙個函式在同一時刻只能被乙個函式呼叫,但在多執行緒中,由於併發性,乙個函式可能同時被多個函式呼叫,此時這個函式就成了臨界資源,很容易造成呼叫函式處理結果的相互影響,如果乙個函式在多執行緒併發的環境中每次被呼叫產生的結果是不確定的,我們就說這個函式是 不可重入...