- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
到目前为止,我有一个很好的自旋锁,可以用作 intendend:
std::atomic_flag barrier = ATOMIC_FLAG_INIT;
inline void lock( ){
while( barrier
.test_and_set( std::memory_order_acquire ) )
{}
}
但是我想知道(指示性地)其中花费了多少 CPU 周期(如果忙等待时间太长,我可能会考虑一个至少让等待线程休眠的互斥体):
inline void lock( int & waitCounter){
while( barrier
.test_and_set( std::memory_order_acquire ) )
waitCounter++;
}
当然,这不会对锁定指令本身进行计数,因此我应该将 waitCounter 递增到哪个常量以准确了解忙等待所花费的周期(我认为由于内存屏障,指令不会被流水线化,因此计数理论上相当精确)?
waitCounter+=2;
waitCounter+=3;
waitCounter+=4; //...
最佳答案
自旋锁所需的周期数取决于许多因素,包括尝试同时执行自旋锁的线程数。
我最近对此进行了测试,here .
简短的回答:它可能因您能够直接控制的事物(应用程序代码)和您不能直接控制的事物(总线争用)而有很大差异。最小循环数和最大循环数之间的关系可以是 110 到 950 或更大。
关于c++ - 忙等待自旋锁所花费的 CPU 周期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32051573/
根据https://developers.google.com/google-apps/calendar/v3/reference/freebusy/query处的文档要执行空闲/忙碌查询,您必须在正
我在启动 Apache 后使用 XAMPP 1.7.7 我收到此警报: Busy... Apache started [Port 80] 我已经打开了 httpd.conf 文件,并将端口号更改为 8
我有端口问题。 每当我启动 Apache 时,它都会给我这个错误: Busy - Apache Started [port 80] 当我启动 Mysql 时出现以下错误: Busy - ERROR
当我运行我的代码时,我总是得到后台工作人员很忙。有帮助吗? struct FtpSetting { public string Server { get; set
在我们的 Android 和 iOS MVVMCross 应用程序中,我们偶尔会遇到 SQLiteException: busy 异常。 给定下面的代码,我们有几个存储库,每个存储库都构造一个下面的实
每次运行解决方案(20 projs)时,我都会收到此错误。我尝试禁用 UI 选项、resharper、删除未使用的扩展等,但仍然无法通过此错误。 我使用的是 VS 2015 Update 2 Ente
我正在使用这个插件 https://github.com/mozilla/rust-android-gradle ,这需要我添加 tasks.whenTaskAdded { task -> i
我是一名优秀的程序员,十分优秀!