我有類似下面的僞代碼的東西:正確使用「禁用叉」的
for (lets say 10 iterations)
begin
// Do some configuration changes
fork
begin
///apply input to design
end
begin
while (1)
/// at particular point update expected status/values
end
begin
while (1)
/// read status and verify with expected values
end
join_any
end
從代碼:只有輸入可以打破叉的應用,因爲其他兩個線程都同時下工作(1 ) 我想要的每個迭代之間禁用所有線程,即,一旦被施加輸入的流 - 禁用所有產生的線程,直到下一次迭代開始(用新的配置)
所以我修改上面的代碼
....
join_any
disable_fork
end
但是,這似乎禁用循環以及/或類似的東西,我不明白,但效果是測試掛了。 有人可以解釋我的理由和解決方案嗎?
這可能會變成一個沒有用的問題:在禁用fork之後,我沒有釋放信號量,從而導致沒有更多事務。我目前正在調試將在以後更新 – wisemonkey
你想完成什麼?你確定你需要一個平行塊嗎? – 2013-01-14 01:04:52
Thanks @ Adam12是的,這些塊需要並行,這是我需要驗證功能的方式。我正在嘗試驗證在更新期間是否讀取正在進行的特定寄存器提供的有效數據。是的,這個問題是因爲我沒有釋放信號量。我已經解決它,現在它的工作正常 – wisemonkey