我有一個名爲「data.txt」的文件,總是有50個字節的數據。正在讀取和寫入不同字節範圍線程安全的相同文件嗎?
我有兩個線程。
第一個線程,讀從字節0到字節50的內容:
while(1){
char buf[50];
FILE* fp = fopen("data.txt","r");
fread(buf,1,50,fp);
/* process data */
fclose(fp);
}
第二個線程,(第一個50個字節之後=總是)數據追加到該文件:
while(1){
FILE* fp = fopen("data.txt","a");
fwrite("hello\n",1,6,fp);
fclose(fp);
}
這個解決方案是線程安全的和便攜的嗎? (沒有分段錯誤,沒有數據不一致,...)
這是不安全的,除非你可以保證寫入的兩個區域不會重疊,以塊爲單位。 –