写代码来解决多进程线程同时读写一个文件的问题

写代码来解决多进程线程同时读写一个文件的问题,第1张

1、一般的加锁,针对并发量不大的情况;

2、对文件进行加锁时,设置一个超时时间。大致实现如下:

if($fp=fopen($fileName,'a')){

 $startTime=microtime()

 do{

  $canWrite=flock($fp,LOCK_EX)

  if(!$canWrite){

   usleep(round(rand(0,100)*1000))

  }

 }while((!$canWrite)&&((microtime()-$startTime)<1000))

 if($canWrite){

  fwrite($fp,$dataToSave)

 }

 fclose($fp)

}

3、对 *** 作的文件进行随机读写,以降低并发的可能性;

4、将所有要 *** 作的进程放入一个队列中;

多线程访问统一资源异常,保证读写 *** 作单线程执行即可。

多线程文件写同一个文件写不进去的原因是多线程访问统一资源异常,对读写 *** 作进行锁定处理,保证读写 *** 作单线程执行即可。

多线程,是指从软件或者硬件上实现多个线程并发执行的技术。具有多线程能力的计算机因有硬件支持而能够在同一时间执行多于一个线程,进而提升整体处理性能。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/tougao/11478314.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存