【发布时间】:2014-03-18 10:40:29
【问题描述】:
对于具有硬件事务内存的场景,我需要一个不会发出任何系统或 IO 调用的睡眠(这些调用会导致中止)。在usleep(1) 中休眠 1 微秒就可以了。
This question 建议实现嵌套循环以保持程序繁忙并延迟一段时间。但是,我希望能够通过删除这些循环的优化进行编译。
一个想法可能是计算一些复杂的数学方程。有没有办法解决这个问题?实际等待的时间不必很精确 - 但是多次运行应该大致相同。
【问题讨论】:
-
清醒的时间(例如计算一个循环或执行一个冗长的方程式)不是睡眠。
-
我假设您在 Intel 的 TSX 上?
-
另外,我很好奇您的用例:延长事务生命周期通常是个坏主意,因为它会不必要地增加冲突的可能性——除非这是重点?
-
@MatthewG.:是的,它是英特尔的 TSX(具体使用 HLE)。你是对的,冲突的概率增加是这里比较两种算法在不同事务运行时方面的重点。
-
嗯,看看这个结果会很有趣。最美好的祝愿!
标签: c++ sleep transactional-memory