2016-03-16 130 views
-3

我正在嘗試使用rusage來計算某個線程的平均cpu時間。RUSAGE_THREAD不工作,尋找解決方案/替代

但是,我越來越'RUSAGE_THREAD'沒有在此範圍內聲明。

我使用

#include <sys/resource.h> 

,並在我的代碼開始與-D_GNU_SOURCE

編譯和我的Linux版本是罰款。

這是我嘗試做了計算:

struct rusage l_rusage; 
int retVal = getrusage(RUSAGE_THREAD, &l_rusage); 

u64 userUSeconds = (static_cast<u64>(l_rusage.ru_utime.tv_sec)) * 1000000 + 
    (static_cast<u64>(l_rusage.ru_utime.tv_usec)); 

u64 systemUSeconds = (static_cast<u64>(l_rusage.ru_stime.tv_sec)) * 1000000 + 
    (static_cast<u64>(l_rusage.ru_stime.tv_usec)); 

return (userUSeconds + systemUSeconds)/ACE_OS::num_processors_online(); 

任何想法?或者甚至可能有其他解決方案?我也使用ACE庫,所以我有ACE_OS,但是當我嘗試使用ACE_OS :: rusage時,找不到RUSAGE_THREAD的等價物。

謝謝

編輯:另外還有一件事,我不能訪問所制線代碼實際上是,我只能用代碼內螺紋。

+1

請嘗試創建一個[最小,完整和可驗證示例](http://stackoverflow.com/help/mcve)並向我們展示,看看代碼總是有所幫助。 –

回答

1

manual page說你需要定義宏_GNU_SOURCE而不是__USE_GNU

+0

我的不好,但這仍然不會工作,同樣的錯誤,將定義移動到生成文件,以確保它定義在每一件事之前。 –