全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:2757
推到 Plurk!
推到 Facebook!

關於sleep函數的問題

尚未結案
iamwueric
一般會員


發表:8
回覆:6
積分:2
註冊:2004-11-14

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-12-17 18:00:45 IP:219.68.xxx.xxx 未訂閱
小弟我的程式要DOS下執行 所以我就選console wizare模式來撰寫我的程式 但是很奇怪的是 sleep應該是以千分之一秒為單位 可是我程式是以秒為單位 讓我有點稿不清楚 sleep(1)<---這是我的寫法 電腦都會deleg一秒 是我source type選錯了嗎 console wizare 有兩種source type 分別是c 和c 如果我想讓sleep以 千分之一秒為單位 要選那一種模式 請知道的人 不吝解答 謝謝
nlj859
資深會員


發表:139
回覆:375
積分:322
註冊:2004-03-20

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-12-18 16:10:10 IP:163.28.xxx.xxx 未訂閱
Hello iamwueric,    Sleep()它是以millisecond為單位. 所以Sleep(1)不會是delay 1秒. PS.可否po上你的程式碼以供測試?    底下為說明: Delay program execution for a specified number of microseconds. void Sleep(unsigned milliseconds); Sleep pauses program executions as specified by the milliseconds parameter. Under Windows, Sleep is just a link to the Sleep function in the system API. Under Linux, Sleep calls the usleep library routine.
iamwueric
一般會員


發表:8
回覆:6
積分:2
註冊:2004-11-14

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-12-18 17:18:16 IP:219.68.xxx.xxx 未訂閱
看過很多前輩的文章 我也知道Sleep()它是以millisecond為單位. 可是我sleep(1)經過測試 是delay 1秒 我也覺得很奇怪 所以我把程式中需要 delay的部份PO出來  PS:我是用程式控制IC輸出信號 我是在BCB的console模式下撰寫程式至於用什麼source type 我也忘了 希望各位前輩可以指點迷津  謝謝 for(j=0;j
nlj859
資深會員


發表:139
回覆:375
積分:322
註冊:2004-03-20

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-12-18 17:30:52 IP:163.28.xxx.xxx 未訂閱
Hello iamwueric,    假設Sleep(1)會delay 1秒的話,那如果把Sleep(1)那行拿掉呢?看看是不是就能很快就把信號讀出來?    如果不加Sleep(1)還是會delay 1秒,那就要看"讀回信號"那行了... 看看它每次讀回信號要花多久時間. 如果讀回信號要花幾秒的時間,那就跟Sleep()沒有關係了. PS.基本上要delay 0.001秒,是不是有加跟沒加是不是差不多??    希望有人可以解答.    測試了一下,20秒做完..
#include 
#pragma hdrstop    #pragma argsused
int main(int argc, char* argv[])
{
  for(int i=0;i<10000;i  )
    {
      cout << "Hi" << endl;
      Sleep(1);
    }
  return 0;
}
發表人 - nlj859 於 2004/12/18 18:22:25
iamwueric
一般會員


發表:8
回覆:6
積分:2
註冊:2004-11-14

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-12-18 17:36:26 IP:219.68.xxx.xxx 未訂閱
剛剛開c++ builder去試了一下 一樣是用console model source type 是選C++其他都照預設的設定 寫了一個小程式去試試看sleep() 執行出來還是delay 1 秒 請問一下 問題出在哪 可以幫我看一下嗎    #include #include #pragma hdrstop int i,k; //--------------------------------------------------------------------------- #pragma argsused int main(int argc, char* argv[]) { for(i=0;i<100;i ) { printf("****HI****\n"); sleep(1); } return 0; }
psl
一般會員


發表:6
回覆:30
積分:7
註冊:2003-06-11

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-12-18 18:03:17 IP:220.133.xxx.xxx 未訂閱
我剛剛試了一下 也是 c console 沒問題耶 o_Oa 我只引入 iostream 我注意到兩點 給你參考一下 1. Sleep() 第一個字是大寫的 2. 我把滑鼠移到 Sleep() 函式上 顯示的是 stl/_threads.h 表示所用到的 Sleep() 是 _threads.h 裡的 希望對你有幫助 ^_^
iamwueric
一般會員


發表:8
回覆:6
積分:2
註冊:2004-11-14

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-12-18 18:13:34 IP:219.68.xxx.xxx 未訂閱
剛剛照psl大大的方法去試 果然有效 之前是因為沒有引入iostream函數 和第一個字沒大寫 現在問題解決了 謝謝 兩位大大的熱心指導 再次感謝
系統時間:2024-05-19 14:43:07
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!