| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 955 人关注过本帖
标题:事件的问题
取消只看楼主 加入收藏
bobo2185355
Rank: 2
等 级:论坛游民
帖 子:81
专家分:43
注 册:2010-4-11
结帖率:86.67%
收藏
已结贴  问题点数:20 回复次数:5 
事件的问题
举例:对一个功能模块建立了3个线程(a,b,c),EVENT中初始化为置位,那么a线程首先执行,但是在一个时间片内没有完成,他会被WINDOWS挂起,其他的线程也会被WaitForSingleObject所拒绝,只有当a现成再次分得时间片后,这段代码才能继续执行直到SetEvent,那么这段代码启不是被a现成独占的吗?请指点,如果描述中有错误请指出,毕竟新手上路.
还有个问题,如果这个代码执行一个循环,那么a线程在执行完第一遍循环之后时间片没到的话 他是继续执行循环还是一直等到时间片到被WINDOWS挂起为止
搜索更多相关主题的帖子: 时间 新手上路 时间 新手上路 时间 新手上路 
2010-10-18 00:40
bobo2185355
Rank: 2
等 级:论坛游民
帖 子:81
专家分:43
注 册:2010-4-11
收藏
得分:0 
问题的补充:今天看老罗的书看到12章了,对 事件 的问题是越看越糊涂,希望大家帮我下,为了阐述我的意思,我举一个可能不贴切的例子,我把事件比做一扇门,置位(为开门),复位(关门),WaitForSingleObject(把他比做看大门的,通知来访者能不能进入),SetEvent(比做开门命令),ResetEvent(比做关门命令).书里把事件看成WINDOWS内部标志,但是我看例题里面主线程用WaitForSingleObject检测事件的状态,子线程也用来检测事件状态,他们检测的是同一个标志吗?如果是同一个的话那就更不能理解了,子线程和主线程之间对事件的状态相互不影响吗?哎~~~这段内容我已经看了N遍了,看的我都快不认识中国字了,可能理解能里比较低,希望大家指点下
2010-10-18 01:10
bobo2185355
Rank: 2
等 级:论坛游民
帖 子:81
专家分:43
注 册:2010-4-11
收藏
得分:0 
我也知道WINDOWS是事件驱动的,可是我觉得你只看了我的标题没看内容,所以你回答和没回答是一样的,不能给你分了
2010-10-18 08:35
bobo2185355
Rank: 2
等 级:论坛游民
帖 子:81
专家分:43
注 册:2010-4-11
收藏
得分:0 
我现在唯一不明白的地方就是,举例:3个线程(a,b,c)EVENT初始化为置位,自动复位,当线程a得到时间片执行代码的时候,如果在一个时间片内没有执行完,被WINDOWS挂起到就绪队列,但是线程,b,c,因为此时EVENT的状态是复位的状态,2个线程都被WaitForSingleObjict所拒绝,那么WINDOWS是不是根本就不会把b,c线程放到就绪队列,而是放到阻塞队列,那么就绪队列只有线程a,我晕 怎么又扯到操作系统了,有点晕了 我把书上的代码段复制过来 但是不能全部复制 只把线程函数复制了吧 希望能得到解释,我晕 连我自己都不知道在问什么了,应该是3个线程时间片的分配问题吧,就像我所描述的 b,c线程根本就不会被放到就绪队列里面
_Counter    proc    uses ebx esi edi,_lParam

        inc    dwThreads
        invoke    SetWindowText,hWinCount,addr szStop
        and    dwOption,not F_STOP

        .while    ! (dwOption & F_STOP)
            invoke    WaitForSingleObject,hEvent,INFINITE
            inc    dwCounter1
            mov    eax,dwCounter2
            inc    eax
            mov    dwCounter2,eax
            invoke    SetEvent,hEvent
        .endw
        dec    dwThreads
        invoke    SetWindowText,hWinCount,addr szStart
        ret

_Counter    endp
2010-10-18 11:00
bobo2185355
Rank: 2
等 级:论坛游民
帖 子:81
专家分:43
注 册:2010-4-11
收藏
得分:0 
对~~我好象就是 WINDOWS对3个线程是如何分配时间片的这个问题不明白,至于代码实现的功能不用解释 我知道
2010-10-18 11:19
bobo2185355
Rank: 2
等 级:论坛游民
帖 子:81
专家分:43
注 册:2010-4-11
收藏
得分:0 
那我把帖子结了,等以后操作系统原理学到这里可能才会真的明白,谢谢各位,真的发现是小学生和大学生的差距
2010-10-18 16:52
快速回复:事件的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.012790 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved