[問題] 使迴圈進行無限次數執行

看板C_and_CPP (C/C++)作者 (トースト)時間10年前 (2015/12/24 01:20), 10年前編輯推噓14(14019)
留言33則, 13人參與, 最新討論串1/1
開發平台(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

12/24 01:41, , 1F
while(變數)... ?
12/24 01:41, 1F

12/24 01:51, , 2F
for(;;)
12/24 01:51, 2F
1樓指的是像是故意找一個變數,故意讓他不可能不存在來當作終止條件嗎?? 請問2樓的意思是?? ※ 編輯: t78923t (163.25.118.211), 12/24/2015 02:12:25 ※ 編輯: t78923t (163.25.118.211), 12/24/2015 02:15:30

12/24 02:16, , 3F
有什麼理由你不想寫 while(1) 或 while(true) 嗎?
12/24 02:16, 3F
因為我正在使用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

12/24 04:47, , 4F
接到東西break while不就行了嗎 還有你想要無窮for
12/24 04:47, 4F

12/24 04:47, , 5F
不是也是有一樣的問題
12/24 04:47, 5F

12/24 05:14, , 6F
UI Thread進到迴圈了當然卡住啊
12/24 05:14, 6F

12/24 06:23, , 7F
問題就只是樓上講的 UI Thread 被卡住了而已
12/24 06:23, 7F

12/24 10:05, , 8F
你需要的是multi-thread... 這是gui程式的必備工具
12/24 10:05, 8F

12/24 10:50, , 9F
坦白說,我覺得你沒有問對問題
12/24 10:50, 9F
我有試過開新的thread 但迴圈還是需要無限次跑 或是用其他方式 否則這個thread只跑 了一次 ※ 編輯: t78923t (42.73.154.145), 12/24/2015 11:14:19

12/24 11:36, , 10F
用 even handle 來做
12/24 11:36, 10F

12/24 11:36, , 11F
event
12/24 11:36, 11F

12/24 11:38, , 12F
multi-thread 然後把 lock 當接力棒丟 (?
12/24 11:38, 12F

12/24 11:59, , 13F
MFC的話就是把無窮迴圈寫在另一個thread
12/24 11:59, 13F

12/24 12:00, , 14F
停止條件就用個event object去檢查吧
12/24 12:00, 14F

12/24 13:14, , 15F
樓上幾位大大都突破盲腸了!
12/24 13:14, 15F

12/24 13:15, , 16F
簡單的說..在Process起來時,啟動一thread,這thread負責
12/24 13:15, 16F

12/24 13:16, , 17F
處理按了button後的措施,這措施通常是SetEvent,
12/24 13:16, 17F

12/24 13:18, , 18F
WaitForSingleObject置於new出來這個thread的無窮迴圈內部,
12/24 13:18, 18F

12/24 13:18, , 19F
在程式結束時,一樣會SetEvent給這個同步物件WaitForSingle
12/24 13:18, 19F

12/24 13:19, , 20F
Objject,進行資源的釋放。
12/24 13:19, 20F

12/24 13:20, , 21F
這麼做的目的,就是為了避免main thread卡住,new的那個就專
12/24 13:20, 21F

12/24 13:20, , 22F
門用來處理UI後端的資料部份。
12/24 13:20, 22F

12/24 13:21, , 23F
我想你對於這些Windows API不熟,建議你先了解一下這些工具
12/24 13:21, 23F

12/24 13:21, , 24F
的使用方式,謝謝。
12/24 13:21, 24F

12/24 13:33, , 25F
以上只是一種做法供你參考,不一定要這樣做,就是一個概念。
12/24 13:33, 25F

12/24 14:18, , 26F
非得主緒執行的話 就用timer吧
12/24 14:18, 26F

12/24 20:08, , 27F
你做mfc一定要開至少兩條thread,總不能你後端運作時,u
12/24 20:08, 27F

12/24 20:08, , 28F
ser用的畫面卡住吧
12/24 20:08, 28F
謝謝各位的回答!! 請問要開新的thread是不是用add class的方式選CWin thread base來 新增? 這時候專案會出現一個新的有InitInstance()的class ※ 編輯: t78923t (120.126.5.228), 12/25/2015 00:01:17

12/25 09:47, , 29F
不是很懂 總之你可以用AfxBeginThread
12/25 09:47, 29F

12/25 11:15, , 30F
程式是直線執行的..任何無限迴圈都可以..主要是要有"跳"
12/25 11:15, 30F

12/25 11:15, , 31F
的方法....
12/25 11:15, 31F

12/25 12:34, , 32F
AfxBeginThread,用法可以上msdn查
12/25 12:34, 32F

12/25 13:27, , 33F
另外建議要再念過multi-thread相關知識 不然容易有bug
12/25 13:27, 33F
文章代碼(AID): #1MUjVHoa (C_and_CPP)
文章代碼(AID): #1MUjVHoa (C_and_CPP)