作者t78923t (トースト)
看板C_and_CPP
標題[問題] 使迴圈進行無限次數執行
時間Thu Dec 24 01:19:22 2015
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) VS 2008
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) 無
問題(Question): 我想製造一個可以無限次數執行的迴圈
目前看到的方式是使用kbhit()函數當作do{...} while( )迴圈的終止條件
就是在鍵盤未按下任意鍵時 迴圈不會終止
我想請問還有哪種方式可以造成一樣效果的?
PS:除了while(1){...}這種方式
謝謝。
餵入的資料(Input): 預期的正確結果(Expected Output): 錯誤結果(Wrong Output): 程式碼(Code):(請善用置底文網頁, 記得排版) 補充說明(Supplement): --
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 163.25.118.211
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1450891217.A.CA4.html
推 BIAO: while(變數)... ?12/24 01:41
推 winken2004: for(;;)12/24 01:51
1樓指的是像是故意找一個變數,故意讓他不可能不存在來當作終止條件嗎??
請問2樓的意思是??
※ 編輯: t78923t (163.25.118.211), 12/24/2015 02:12:25
※ 編輯: t78923t (163.25.118.211), 12/24/2015 02:15:30
推 LPH66: 有什麼理由你不想寫 while(1) 或 while(true) 嗎?12/24 02:16
因為我正在使用MFC寫介面 我發現若按鈕按了進入while(1)迴圈後
一旦迴圈出不來介面就會卡住 無法按其他按鈕去執行其他按鈕的功能
順便問一下有沒有什麼函數可以像Find()函數一樣可以搜尋變數內容的?
或是搜尋指標、struct內容的函數?
※ 編輯: t78923t (163.25.118.211), 12/24/2015 03:25:25
※ 編輯: t78923t (163.25.118.211), 12/24/2015 03:28:49
推 qas612820704: 接到東西break while不就行了嗎 還有你想要無窮for12/24 04:47
→ qas612820704: 不是也是有一樣的問題12/24 04:47
→ TobyH4cker: UI Thread進到迴圈了當然卡住啊12/24 05:14
推 LPH66: 問題就只是樓上講的 UI Thread 被卡住了而已12/24 06:23
推 rodion: 你需要的是multi-thread... 這是gui程式的必備工具 12/24 10:05
→ HolyBugTw: 坦白說,我覺得你沒有問對問題12/24 10:50
我有試過開新的thread 但迴圈還是需要無限次跑 或是用其他方式 否則這個thread只跑
了一次
※ 編輯: t78923t (42.73.154.145), 12/24/2015 11:14:19
推 longlongint: 用 even handle 來做12/24 11:36
→ longlongint: event12/24 11:36
→ longlongint: multi-thread 然後把 lock 當接力棒丟 (?12/24 11:38
推 james732: MFC的話就是把無窮迴圈寫在另一個thread 12/24 11:59
→ james732: 停止條件就用個event object去檢查吧12/24 12:00
推 BIAO: 樓上幾位大大都突破盲腸了!12/24 13:14
→ BIAO: 簡單的說..在Process起來時,啟動一thread,這thread負責12/24 13:15
→ BIAO: 處理按了button後的措施,這措施通常是SetEvent,12/24 13:16
→ BIAO: WaitForSingleObject置於new出來這個thread的無窮迴圈內部,12/24 13:18
→ BIAO: 在程式結束時,一樣會SetEvent給這個同步物件WaitForSingle12/24 13:18
→ BIAO: Objject,進行資源的釋放。12/24 13:19
→ BIAO: 這麼做的目的,就是為了避免main thread卡住,new的那個就專12/24 13:20
→ BIAO: 門用來處理UI後端的資料部份。12/24 13:20
→ BIAO: 我想你對於這些Windows API不熟,建議你先了解一下這些工具 12/24 13:21
→ BIAO: 的使用方式,謝謝。 12/24 13:21
推 BIAO: 以上只是一種做法供你參考,不一定要這樣做,就是一個概念。 12/24 13:33
→ CumCumCum: 非得主緒執行的話 就用timer吧 12/24 14:18
推 overhead: 你做mfc一定要開至少兩條thread,總不能你後端運作時,u 12/24 20:08
→ overhead: ser用的畫面卡住吧 12/24 20:08
謝謝各位的回答!! 請問要開新的thread是不是用add class的方式選CWin thread base來
新增? 這時候專案會出現一個新的有InitInstance()的class
※ 編輯: t78923t (120.126.5.228), 12/25/2015 00:01:17
推 overhead: 不是很懂 總之你可以用AfxBeginThread 12/25 09:47
推 justinj: 程式是直線執行的..任何無限迴圈都可以..主要是要有"跳" 12/25 11:15
→ justinj: 的方法.... 12/25 11:15
推 boss0405: AfxBeginThread,用法可以上msdn查 12/25 12:34
→ overhead: 另外建議要再念過multi-thread相關知識 不然容易有bug 12/25 13:27