0
我從回調函數獲取數據,例如從回調線程安全執行檢索信息
static char *buf;
int cb(char *c) {
// append to global var buf
append(buf, c);
return 0;
}
int foo() {
...
bar(cb); // calls cb
...
}
。顯然我附上每個調用回調到一個全局變量(buf
),因爲我無法通過任何在其他時間的信息。現在的問題是,我需要這個線程安全與POSIX線程。我如何安全地檢索信息?注意:我無法更改cb
的類型,它必須是int (*cb)(char *c)
。
你想「安全地檢索」什麼「信息」?是不是鎖定附加(buf,c);'你需要什麼?我很困惑。 –
@意義問題不會有多個線程全部覆蓋'buf',鎖只能防止它同時發生?顯然,這實際上並不是真正的代碼,但基本上可以從'c'中檢索信息。'cb' – carloabelli
是的,所有線程都會覆蓋'buf'。我現在明白你想要的更好;看看[這裏](http://stackoverflow.com/q/4118943/1971013)。對你的設計給予更廣泛的看法是很好的,而不是放大似乎是問題的東西;可能有不同的方法。 –