2016-08-25 31 views
1

我想創建一個保留在循環中的新線程。事情是這樣的:使用pthread創建時鐘

void Clock() { 
    double Time = 0; 
    while (1) { 
     usleep(1000); 
     Time = (Time+0.1); 
    } 
    return; 
} 

然後,我會像我的其他現有線程可以訪問最新的時鐘值,並使用它。我如何聲明「時間」變量,以便它可以被所有線程訪問,以及如何修改上面的代碼以適應這個變量?還有,我需要做什麼來訪問它?

+1

讓它成爲一個全局變量? –

+0

@JoachimPileborg我有很多不同的源文件,我可以在頭文件中聲明一個全局變量以確保它能夠在我所有的源文件中使用嗎?或者是否有不同的解決方案 – Mst137

+0

只是把它變成一個全局變量就會乞求競爭狀態。使用鎖定互斥鎖的存取器函數將其設爲靜態。在你的'Clock()'函數中鎖定相同的互斥體(只是在更新時,而不是在睡覺時)。 –

回答

1

如果你只是想獲得當前時間,你可以沒有線程。例如,看看Get the current time in C

如果您使用線程,請注意線程獨立運行。看一個簡單的例子,看看Mutex lock threads。您將需要使用pthread_create創建線程,並使用pthread_mutex來保護Time變量。

我會建議你先從第一個開始,然後讓原子到下一次。