簡體   English   中英

Pthread create 沒有啟動線程

[英]Pthread create is not starting the thread

我正在使用 pthread 啟動線程,但是創建 function 本身並沒有啟動線程但是如果我調用 pthread join,它會啟動,所以實際上我應該調用 p thread join 嗎?

我從一些答案中聽說不需要 pthread join,我的 pthread create function 是從 main 調用的

    int main(void) {
    
        printf("-----------Welcome------\n");
    
        Start_Generation();
    
    
        return 0;
    }
    
   
    
    int Start_Generation(void)
    {
        
        ret=pthread_create(&C_AO_GENERATION_THREAD, NULL, C_Aogeneration_thread,(void*) message1);
        if(ret!=0)
        {
            printf("Error Starting Thread\n");
            return -1;
        }
        else
        {
            printf("AO Thread Started\n");
        }
        //ret=pthread_join(C_AO_GENERATION_THREAD, NULL);
        return 0;
    }
    void *C_Aogeneration_thread (void *ptr)
    {
        char *message;
        message = (char *) ptr;
        unsigned int prof_gen_count;
        unsigned int written_sample=0;
        unsigned int curr_idx=0;
        int ch=0;
        int written=0;
        printf("%s",message);
        printf(" Generation Started\n");
        prof_gen_count=(samplingrate/10);
        
while(stopflag)
{
printf("Thread is working\n");
}
    
        return 0;
    }

    enter code here

 

我正在使用 pthread 啟動線程,但是創建 function 本身並沒有啟動線程

如問題中所述,您的主線程在報告pthread_create()調用成功或失敗后立即從main返回終止,因此

  1. 整個程序在該點終止,顯然在孩子進展到足以提供任何證據表明它正在運行之前,而且

  2. 使用單獨的線程沒有意義。

但是,如果我調用 pthread join,它會啟動,所以實際上我應該調用 p thread join 嗎?

在指定線程終止之前,對pthread_join()的調用不會成功返回。 事實上,這就是它的目的。 根據經驗,您應該加入或分離您創建的每個線程。 加入通常是您想要的,並且還要注意,分離線程並不會阻止進程在主線程返回或exit()時終止並使用該線程。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM