有關使用pthreads多線程化的基本問題..
N個線程在不同/相似/相同時間都寫入同一文件..如何使其「安全」?即確保沒有2個線程試圖同時寫入。從多個線程寫入相同的文件。同步?鎖定? [pthreads] [PHP]
class WebRequest extends Thread {
public $cik;
public function __construct($cik){
$this->cik = $cik;
}
public function run() {
for_cik($this->cik);
echo 'Running Thread : ' . $this->getCurrentThreadId() ."\n";
sleep(rand(1,3)) ;
}
function for_cik($cik) {
//doing work
// lock() ; ?
Log_NIK::getInstance()->write_line($log) ; //write this 'safely'
//unlock() ; ?
}
}
我搜索,但發現只有特定語言提醒
Edit(對於其他語言C#/ JAVA等):
的write_line功能是:
function write_line($line){
file_put_contents($this->logFileName,$line."\n",FILE_APPEND) ;
}
爲什麼downvotes? –
可能因爲你沒有顯示你的所有代碼。代碼的用途是:Log_NIK :: getInstance() - > write_line()。所以我們可以看到你的文件的寫法..你不能只是轉儲一堆代碼,並期望我們弄清楚。花點時間儘可能清楚地寫出一個很好的問題,儘可能詳細地描述我們需要的內容,以便我們看到發生了什麼。 –