我在/usr/local/pgi/linux86-64/13.10/include/CC/fstream.h的fstream.h文件中沒有提到互斥鎖。此外,在我使用< <運算符寫入輸出的程序中,如果在「相同」時間寫入文件,字符串流文件可以變爲交錯。
由於您正在閱讀和寫入同一個文件,我想行順序很重要?因此,我認爲你想要一個全局互斥鎖之間的線程。
喜歡的東西:
#include ....
pthread_mutex_t FileMutex = PTHREAD_MUTEX_INITIALIZER;
std::stringstream strm(std::stringstream::binary|...)
int main()
{
blah blah
pthread_create(&threads, NULL, function, voidPtrToArguments);
blah blah
}
void *function(void *voidPtrToArguments)
{
blah blah some more
pthread_mutex_lock(&FileMutex);
strm.write(...);
pthread_mutex_unlock(&FileMutex);
}
,然後同一個函數讀取。
'std :: stringstream'的來源是否有互斥或原子? – woolstar
我對'std :: stringstream'的特定實現不感興趣。我對標準的規格感興趣。 – nature1729
如果「符合標準」的stdC++庫沒有互斥體或其他線程安全機制,那麼它很可能不是標準所要求的。 – woolstar