歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> 有關Linux下線程的創建

有關Linux下線程的創建

日期:2017/3/1 9:54:21   编辑:Linux編程

前段時間有個小特性設計多線程的問題,利用linux中創建線程的函數。

#include <pthread.h>

int pthread_create(pthread_t *thread,
const pthread_attr_t *attr,
void *(*start_routine) (void *),
void *arg);

Compile and link with -pthread.

由於系統中用的是ACE封裝的基礎庫,在多線程傳參的時候一直有問題。參數需求是,為了傳遞一個數據庫的bindID給定時任務,為了數據庫查詢超時,保護後台的基礎業務。

但是多線程調試的時候,日志中顯示傳入的ID,void* arg參數老是和創建線程時的ID不一致,以為是ACE庫問題導致。後來經導師提醒,線程中的arg,在另外線程中,它的內存被free了,導致數據不對。恍然大悟,這個參數,一般定義都是全局的控制塊去訪問的,自己一不小心用了個ULONG,給忘了。其實在這個應用中,完全不用去創建一個全局的變量,浪費內存的。因為* arg 就是ULONG型,完全有內存空間進行參數傳遞。

Copyright © Linux教程網 All Rights Reserved