我知道有些CPU在决定要预取的代码时会尝试预测分支语句,我想知道是否有办法在C#(或C++)中帮助或硬编码那些分支预测.一个例子是错误检查我知道的语句是否会在99.9999999%的时间内返回false,我想告诉CPU始终期望该分支永远不会出现在预取的目的.
谢谢.
我在C#中遇到了一些线程同步问题.我有一个共享对象,它被两个线程操纵,我使用lock()访问了互斥的对象,但我也希望根据共享对象的状态阻塞每个线程.当对象为空时特别阻塞线程A,当对象满时阻塞线程B,当对象状态改变时让另一个线程发出阻塞线程信号.
我尝试使用ManualResetEvent执行此操作,但遇到竞争条件,其中线程B将检测对象已满,移至WaitOne,并且线程A将进入并清空对象(每次访问都发出MRE信号,并阻止自身一次在线程A命中WaitOne之前,对象是空的,这意味着线程A正在等待线程未满,即使它不是.
我想如果我可以调用像'SignalAndWaitOne'这样的函数,那么在等待之前它会原子地发出信号,它会阻止这种竞争条件吗?
谢谢!