[問題] 高精度等待時間
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
VC
問題(Question):
我想要產生一筆仿類比的數位訊號,輸出頻率是 1E6 HZ
我還想要接收一筆類比資料,擷取頻率是 1E4 HZ
所以我開了兩個 thread 去分別執行任務
問題在於我使用 QueryPerformanceCounter 去當接收端擷取頻率的計時器
QueryPerformanceFrequency(&Freq);
QueryPerformanceCounter(&t1);
do{
QueryPerformanceCounter(&t2);
}while((t2.QuadPart-t1.QuadPart)/Freq.QuadPart>0.0001)
該寫法很耗CPU,造成輸出訊號的執行序不能輸出正確的訊號
即:
當time = 0 時,應該輸出 5 ,程式正確輸出 5
當time = 1 時,應該輸出5.0001,程式卻因為在執行另一條thread
就輸出上一筆資料的訊號 (因為該位置上的值沒被更改)
該怎麼解決這個問題呢?
是否有更好的寫法?
相同的問題 http://zhidao.baidu.com/question/296303137.html
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.35.165.71
→
11/08 23:45, , 1F
11/08 23:45, 1F
→
11/08 23:46, , 2F
11/08 23:46, 2F
→
11/09 00:01, , 3F
11/09 00:01, 3F
推
11/09 01:03, , 4F
11/09 01:03, 4F
→
11/09 01:05, , 5F
11/09 01:05, 5F
推
11/09 01:23, , 6F
11/09 01:23, 6F
推
11/09 04:07, , 7F
11/09 04:07, 7F
→
11/09 04:08, , 8F
11/09 04:08, 8F
→
11/09 04:09, , 9F
11/09 04:09, 9F
→
11/09 09:31, , 10F
11/09 09:31, 10F
→
11/09 09:39, , 11F
11/09 09:39, 11F
→
11/09 09:43, , 12F
11/09 09:43, 12F
→
11/09 09:43, , 13F
11/09 09:43, 13F
推
11/09 09:57, , 14F
11/09 09:57, 14F
推
11/09 14:19, , 15F
11/09 14:19, 15F
→
11/10 12:01, , 16F
11/10 12:01, 16F
→
11/10 12:03, , 17F
11/10 12:03, 17F
→
11/10 12:03, , 18F
11/10 12:03, 18F
→
11/10 23:02, , 19F
11/10 23:02, 19F
→
11/10 23:04, , 20F
11/10 23:04, 20F
→
11/10 23:06, , 21F
11/10 23:06, 21F
→
11/10 23:07, , 22F
11/10 23:07, 22F
→
11/10 23:07, , 23F
11/10 23:07, 23F
→
11/10 23:12, , 24F
11/10 23:12, 24F
→
11/10 23:13, , 25F
11/10 23:13, 25F
→
11/10 23:14, , 26F
11/10 23:14, 26F
→
11/10 23:41, , 27F
11/10 23:41, 27F