這可能是一個簡單的查詢。關於多線程程序的查詢
當我們創建一個線程時,我們將(void *)t作爲參數傳遞給一個函數PrintHello.we正在將指針threadid中的值複製到tid中,這是一個很長的變量我很迷惑參數傳遞。 這是一個通過引用或通過value.over所有這是正確的嗎? (value *)t
。它通過了什麼值?
long t;
rc = pthread_create(&threads[t], NULL, PrintHello, (void *)t);
void *PrintHello(void *threadid)
{
long tid;
tid = (long)threadid;
請幫我避免我的困惑:(
這是正確的答案。在這種情況下,假設你只想傳遞32/64位標量變量,那麼它是安全的。該值僅被複制,無論函數是否終止,您都可以安全地讀取數據。 – minjang 2009-11-10 08:26:38