相关疑难解决方法(0)

什么是比赛条件?

编写多线程应用程序时,遇到的最常见问题之一是竞争条件.

我对社区的问题是:

什么是比赛条件?你怎么发现它们?你怎么处理它们?最后,你如何防止它们发生?

concurrency multithreading terminology race-condition

915
推荐指数
11
解决办法
54万
查看次数

fwrite 写入 NUL

我正在尝试使用 PHP 写入文件,这是我正在使用的代码(取自我上一个问题的答案):

$fp = fopen("counter.txt", "r+");

while(!flock($fp, LOCK_EX)) {  // acquire an exclusive lock
    // waiting to lock the file
}

$counter = intval(fread($fp, filesize("counter.txt")));
$counter++;

ftruncate($fp, 0);      // truncate file
fwrite($fp, $counter);  // set your data
fflush($fp);            // flush output before releasing the lock
flock($fp, LOCK_UN);    // release the lock

fclose($fp);
Run Code Online (Sandbox Code Playgroud)

读取部分工作正常,如果文件被读取,则其内容读取良好,即如果文件包含2289,则2289读取。

问题是,当它增加并将值重写到该文件时,[NUL][NUL][NUL][NUL][NUL][NUL][NUL][NUL]1会被写入。

我错过了什么?为什么写入空字符?

php file fwrite nul

1
推荐指数
1
解决办法
1610
查看次数