+ -
当前位置:首页 → 问答吧 → 还是关于线程的问题?

还是关于线程的问题?

时间:2011-05-16

来源:互联网

我想实现内存块只能一个线程访问的功能,并且只有这个线程的规定程序段完整执行完毕后,才准其他线程使用该内存块。并实现内存的共享、线程的独立完整的内存操作。

所以我用一个服务线程(模块)管内存的分配,其他的线程(模块)只管怎么用这块内存。如果用一个服务线程分配一块内存并设为访问保护,当一个线程访问这块内存时,中断到SEH异常处理,异常处理将内存块设为可读写,并将处理权交还原应用线程,此线程于是可以访问此内存块。而当线程切换时,由于SEH已将内存块设为可访问,那么,其他线程此时就能够访问这块内存了。
但要求,此时内存是不能被访问的,因为上一个线程还未完成一个完整的操作。怎么才能让系统时间片切换时,能够通知应用程序,也就是线程的时间片切换(由时钟中断产生)和应用程序的SEH处理同步起来,也就是说在切换的一瞬间,能中断到SEH处理程序将内存块重新设置为保护,从而其他线程无法使用。

作者: hsh188d88452d2   发布时间: 2011-05-16

关键区不是可以吗?

作者: mydo   发布时间: 2011-05-16

不行的,我不想用关键区限制代码的方法,想直接从内存区域上限定,从而保护内存数据的独占性,不想改动代码。

作者: hsh188d88452d2   发布时间: 2011-05-16

我觉得你那样做代价稍大,不如临界区简单。

作者: mydo   发布时间: 2011-05-16

有方法能把线程切换时的中断,指向自定义的回调函数吗?

作者: hsh188d88452d2   发布时间: 2011-05-16

你那样要深入内核的线程调度编程,而且不稳定,需要驱动编程,

你考虑一下有必要如此大的代价吗?

作者: mydo   发布时间: 2011-05-16

我想做个模块,只管写程序 和 知道服务模块通过消息发来的共享数据内存块所在指针就行了,至于别的不管,这样自定的模块,以后编程时不抄心,因为它操作内存一定是不会再出错的

作者: hsh188d88452d2   发布时间: 2011-05-16

学习吗,没什么经历了就简单了

作者: hsh188d88452d2   发布时间: 2011-05-16

具体怎么把线程切换信息,导出到应用程序?

作者: hsh188d88452d2   发布时间: 2011-05-16

楼主,我可以肯定你这样做得不偿失
尤其是你现在还算是初学者的情况

作者: Areslee   发布时间: 2011-05-16

我只想把问题弄清楚,同时加深记忆,只有编程达到随心所欲,才能叫会呀!

作者: hsh188d88452d2   发布时间: 2011-05-16

高手们,知道线程切换,怎么跳转到用户自定处理程序吗?

作者: hsh188d88452d2   发布时间: 2011-05-16

没学会爬之前是学不会跑的。。。。。。。

作者: Areslee   发布时间: 2011-05-16

呵呵,一步一步来吗,总之,线程切换过程中,WINDOWS留给编程人员编程处理机会或者“处理窗口”没有?如果有,那是什么函数,能说下吗?谢谢

作者: hsh188d88452d2   发布时间: 2011-05-16