当前位置: 首页 > news >正文

网站付款链接怎么做的wordpress 文章id排序

网站付款链接怎么做的,wordpress 文章id排序,wordpress 菜单添加图片,怎么进入wordpress后台使用互斥量时存在一个问题: 每次只能有一个线程获得互斥量的权限。如果在一个程序中有多个线程读取某个变量,使用互斥量时也必须排队。而实际上若只是读取一个变量,是可以让多个线程同时访问的,这样互斥量就会降低程序的性能。 例如&#xf…

使用互斥量时存在一个问题: 每次只能有一个线程获得互斥量的权限。如果在一个程序中有多个线程读取某个变量,使用互斥量时也必须排队。而实际上若只是读取一个变量,是可以让多个线程同时访问的,这样互斥量就会降低程序的性能。

例如,假设有一个数据采集程序,一个线程负责采集数据到缓冲区,一个线程负责读取缓冲区的数据并显示,另一个线程负责读取缓冲区的数据并保存到文件,示意代码如下:

int buffer [100];
QMutex mutex;
void threadDAQ::run()
{...mutex.lock();get_data_and_write_in_buffer(); //数据写入buffermutex.unclock();...
}void threadShow::run()
{...mutex.lock();show_buffer(); //读取buffer里的数据并显示mutex.unclock();...
}void threadSaveFile::run()
{...mutex.lock();Save_buffer_toFile(); //读取buffer里的数据并保存到文件mutex.unclock();...
}

数据缓冲区 buffer 和瓦斥量 mutex 都是全局变量,线程 threadDAO 将数据写到 buffer,线程threadShow 和 threadSaveFile 只是读取 buffer,但是因为使用互斥量,这3个线程任何时候都只能有一个线程可以访问 buffer。而实际上,threadShow 和 threadSaveFile 都只是读取 bufer 的数据,它们同时访问 buffer 是不会发生冲突的。

Qt 提供了 QReadWriteLock 类,它是基于读或写的模式进行代码段锁定的,在多个线程读写一个共享数据时,可以解决上面所说的互斥量存在的问题。

QReadWriteLock 以读或写锁定的同步方法允许以读或写的方式保护一段代码,它可以允许多个线程以只读方式同步访问资源,但是只要有一个线程在以写方式访问资源时,其他线程就必须等待直到写操作结束。

QReadWriteLock 提供以下几个主要的函数:

  • lockForRead(),以只读方式锁定资源,如果有其他线程以写入方式锁定,这个函数会阻塞:
  • lockForWrite(),以写入方式锁定资源,如果本线程或其他线程以读或写模式锁定资源,这个函数就阻塞;
  • unlock(),解锁;
  • tryLockForRead(),是 lockForRead()的非阻塞版本;
  • tryLockForWrite(),是lockForWrite的非阻塞版本。

使用QReadWriteLock,上面的三线程代码可以改写为如下的形式:

int buffer [100];
QReadWriteLock Lock;
void threadDAQ::run()
{...Lock.lockForWrite();get_data_and_write_in_buffer(); //数据写入buffermutex.unclock();...
}void threadShow::run()
{...Lock.lockForRead();show_buffer(); //读取buffer里的数据并显示mutex.unclock();...
}void threadSaveFile::run()
{...Lock.lockForRead();Save_buffer_toFile(); //读取buffer里的数据并保存到文件mutex.unclock();...
}

这样,如果 threadDAQ 没有以 lockForWrite()锁定 Lock,threadShow 和 threadSaveFile 可以同时访问 buffer,否则 threadShow 和 threadSaveFile 都被阻塞;如果 threadShow 和 threadSaveFile 都没有锁定,那么 threadDAQ 能以写入方式锁定,否则 threadDAQ 就被阻塞。

QReadLocker 和 QWriteLocker 是 QReadWriteLock 的简便形式,如同 QMutexLocker 是QMutex 的简便版本一样,无需与unlock()配对使用。使用QReadLocker 和QWriteLocker,则上面的代码改写为:

int buffer [100];
QReadWriteLock Lock;
void threadDAQ::run()
{...QWriteLocker Locker(&Lock);get_data_and_write_in_buffer(); //数据写入buffer...
}void threadShow::run()
{...QReadLocker Locker(&Lock);show_buffer(); //读取buffer里的数据并显示...
}void threadSaveFile::run()
{...QReadLocker Locker(&Lock);Save_buffer_toFile(); //读取buffer里的数据并保存到文件...
}
http://www.yayakq.cn/news/938535/

相关文章:

  • 渐变网站网站开发与设计的实训报告
  • 福建省建设执业注册中心网站wordpress iis伪静态
  • 做企业网站电话销售话术建站宝盒做的网站
  • 怎样用ps做网站的效果图建设壁纸网站的目的
  • 制作企业网站首页怎么做2345网址导航怎么卸载
  • 做网站公司三年财务预算表云南建设投资集团网站
  • 企业网站制作多少钱问题不大工作室 网站
  • 网页及网站建设用什么软件做网站市场价格多少钱
  • 央企门户网站哪家做的最好深圳龙岗网站建设公司
  • 做外卖那些网站好网站怎么建设微信支付宝支付功能
  • 东莞网站设计风格更合网站设计
  • 贵州安顺网站建设深圳返利网站建设
  • 温州网站建设和推广dw怎么把代码做成网页
  • 企业网站建设服务好商务定制网站
  • 绿色在线网站模板下载广西桂林旅游几月份去最好
  • 企业为什么建立企业网站潘家园网站建设
  • 创建网站平台贵州飞乐云毕节网站建设
  • 威海外贸网站建设怎么样包装设计网站官网
  • 圣辉友联网站建设模仿网站侵权吗
  • 怎样打造营销型网站建设松江微网站建设
  • 大形电商网站开发费用网站备案文件吗
  • 网站域名备案变更建站哪家好联系兴田德润
  • 电子商务网站开发实训总结呼和浩特市网站公司
  • 网站 站外链接吉安网站
  • 网站建设 镇江杭州网站建设faxide
  • 公司网站推广的方法定制网站制作费用
  • 广州兼职网网站建设洛阳设计公司官网
  • 罗湖住房和建设局网站官网外贸平台有哪些?
  • 电子商务网站开发的视频网站建设免费按词收费
  • 为什么做的网站搜不出来福州网站建设平台