我的程式使用<err.h>函式(如warnx(3))來發出診斷資訊。有時多個執行緒同時進行報告,導致輸出行重疊。
這沒什么大不了的,但是如果有一個簡單的解決方法,我想實作它……有嗎?
(執行緒全部由 OpenMP 管理。)
uj5u.com熱心網友回復:
避免交錯列印警告的最簡單解決方案是使用 OpenMP臨界區。為此,可以#pragma omp critical在替換warnx呼叫的包裝函式中使用該指令。
請注意,stdio/stderr 訪問應該已經被鎖定,也就是說,關于對其執行的操作型別,不能保證鎖定以您想要的方式切割行或行塊。例如,如果您執行多次呼叫尤其如此warnx,而且如果warnx使用多次呼叫的實作fprintf(正如您在評論中指出的那樣)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/467460.html
