作者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://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1450891217.A.CA4.html
1F:推 BIAO: while(变数)... ?12/24 01:41
2F:推 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
3F:推 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
4F:推 qas612820704: 接到东西break while不就行了吗 还有你想要无穷for12/24 04:47
5F:→ qas612820704: 不是也是有一样的问题12/24 04:47
6F:→ TobyH4cker: UI Thread进到回圈了当然卡住啊12/24 05:14
7F:推 LPH66: 问题就只是楼上讲的 UI Thread 被卡住了而已12/24 06:23
8F:推 rodion: 你需要的是multi-thread... 这是gui程式的必备工具 12/24 10:05
9F:→ HolyBugTw: 坦白说,我觉得你没有问对问题12/24 10:50
我有试过开新的thread 但回圈还是需要无限次跑 或是用其他方式 否则这个thread只跑
了一次
※ 编辑: t78923t (42.73.154.145), 12/24/2015 11:14:19
10F:推 longlongint: 用 even handle 来做12/24 11:36
11F:→ longlongint: event12/24 11:36
12F:→ longlongint: multi-thread 然後把 lock 当接力棒丢 (?12/24 11:38
13F:推 james732: MFC的话就是把无穷回圈写在另一个thread 12/24 11:59
14F:→ james732: 停止条件就用个event object去检查吧12/24 12:00
15F:推 BIAO: 楼上几位大大都突破盲肠了!12/24 13:14
16F:→ BIAO: 简单的说..在Process起来时,启动一thread,这thread负责12/24 13:15
17F:→ BIAO: 处理按了button後的措施,这措施通常是SetEvent,12/24 13:16
18F:→ BIAO: WaitForSingleObject置於new出来这个thread的无穷回圈内部,12/24 13:18
19F:→ BIAO: 在程式结束时,一样会SetEvent给这个同步物件WaitForSingle12/24 13:18
20F:→ BIAO: Objject,进行资源的释放。12/24 13:19
21F:→ BIAO: 这麽做的目的,就是为了避免main thread卡住,new的那个就专12/24 13:20
22F:→ BIAO: 门用来处理UI後端的资料部份。12/24 13:20
23F:→ BIAO: 我想你对於这些Windows API不熟,建议你先了解一下这些工具 12/24 13:21
24F:→ BIAO: 的使用方式,谢谢。 12/24 13:21
25F:推 BIAO: 以上只是一种做法供你参考,不一定要这样做,就是一个概念。 12/24 13:33
26F:→ CumCumCum: 非得主绪执行的话 就用timer吧 12/24 14:18
27F:推 overhead: 你做mfc一定要开至少两条thread,总不能你後端运作时,u 12/24 20:08
28F:→ 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
29F:推 overhead: 不是很懂 总之你可以用AfxBeginThread 12/25 09:47
30F:推 justinj: 程式是直线执行的..任何无限回圈都可以..主要是要有"跳" 12/25 11:15
31F:→ justinj: 的方法.... 12/25 11:15
32F:推 boss0405: AfxBeginThread,用法可以上msdn查 12/25 12:34
33F:→ overhead: 另外建议要再念过multi-thread相关知识 不然容易有bug 12/25 13:27