社区
C#
帖子详情
多线程下,如何保证一个线程的一组操作不被中断
mydriverc
2007-09-12 12:59:13
一旦执行了进入了这段代码区,就保证让这段代码全部执行
中间不会被打断,执行完这段代码后,其他线程可以执行。
...全文
952
30
打赏
收藏
多线程下,如何保证一个线程的一组操作不被中断
一旦执行了进入了这段代码区,就保证让这段代码全部执行 中间不会被打断,执行完这段代码后,其他线程可以执行。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
30 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
hcs2007
2007-09-27
打赏
举报
回复
结了 也顶下 学习
蜗牛 强人
mydriverc
2007-09-18
打赏
举报
回复
结贴,给分了。
mydriverc
2007-09-18
打赏
举报
回复
感谢各位,明白那时不可能的。
“在应用层基本上不可能存在要求线程不被抢先的需求。”
ezhuyin
2007-09-17
打赏
举报
回复
赞同蜗牛的看法。其实多线程中,会影响到并发的,最大的因素来自于同步问题。一般说来,加一个锁可以解决大部分的问题。至于线程的排序问题,恕我驽钝,除了用线程间信号之外,暂时想不到别的办法来完成。现在新版本中,Thread.Suspend方法似乎已经不可以用了,如果要暂停一个线程来等待某个线程执行完毕,可用线程信号(参阅ManualResetEvent和AutoResetEvent)。
zk32373139
2007-09-17
打赏
举报
回复
lock(this)
{}
BlueTrees
2007-09-17
打赏
举报
回复
楼上的,从没有任何人说过,事务必须要在一个线程中的。
事务是允许多个线程共同完成的。
事务唯一的特征就是,要么一起提交,要么全部回退。
我看你才不怎么样啊
ttzyanswer
2007-09-17
打赏
举报
回复
问题就是 LZ 的这段代码是放在线程中执行呀..在线程中执行就免不了要线程切换呀..
事务不是数据库才特有的,看来从公务员转过来的确实不怎么样.
ttzyanswer
2007-09-17
打赏
举报
回复
TO BlueTrees(蜗牛)
我很怀疑你的语文能力..究竟你看明白我说的内容了吗?你明白我表达的意思了吗?
我什么时候表示过"事务必须要在一个线程中的"??? 你个大白痴....
he11o
2007-09-17
打赏
举报
回复
我也用过AutoResetEvent进行线程间同步,但是出了一些莫名奇妙的问题,而且又不是每次都发生。我的原则是以后能不用多线程就不用多线程
deally
2007-09-14
打赏
举报
回复
要求线程不被打断?有什么实际意义么?实时监控?lz给个回答看。
不过楼主可以提高线程的优先级试试看。
stonepeter
2007-09-14
打赏
举报
回复
如果是事务的机制的话,看起来和线程没多大关系吧?
ttzyanswer
2007-09-14
打赏
举报
回复
LZ 的意思是这样的(我认为):
比如在线程A中执行的方法中有如下代码段:
1. a=b+c;
2. a++;
....
.....
n. value=a;
LZ 是想 1-n 的代码要么全部一次性执行完成(中间不发生线程切换) 要么都不完成.(有点类似数据库中的事务机制)
xlyyc
2007-09-13
打赏
举报
回复
研究下原子类吧,我用JAVA.
C#不熟悉,应该也有这样的东西
BlueTrees
2007-09-13
打赏
举报
回复
是的,Join就是对等待的封装
taishen
2007-09-13
打赏
举报
回复
顺便请教一下,等待线程句柄是指什么?Join吗?
photoplan
2007-09-13
打赏
举报
回复
蜗牛是很强的
BlueTrees
2007-09-13
打赏
举报
回复
判断线程是不是结束,可以等待线程的句柄,线程也是一个可等待对象,当线程结束时线程对象就处于使能状态了!
一般来说,也不会有什么需求需要等待线程结束的,特别是像.net具有垃圾内存自动回收机制的一般不需要等待线程,一般等待线程结束是为了释放我们自己的程序对线程作的封装所产生的对象。
如果需要等待线程完成某种工作,可以用Event,事件,其他线程等待Event,当线程完成工作后就让Event使能,这样其他线程就可以继续执行。
zhangyu636
2007-09-13
打赏
举报
回复
我的也和楼主一样。总断了
BlueTrees
2007-09-13
打赏
举报
回复
线程保持不中断的理由,只有2个
1、要求严格时间的,这种应用在应用层基本不可能出现。
2、要求对某个共享资源进行保护。
对于2来说,用lock方式保护所有线程可能访问的共享资源就可以了!在应用层基本上不可能存在要求线程不被抢先的需求!!!!!
LZ你压根没懂什么是多线程,只是字面上懂了,离开理解还差一截!!
photoplan
2007-09-13
打赏
举报
回复
我明白,楼主不是说线程同步
可以把线程对象保存为类的成员,在其他线程里判断他的 ThreadState 是不是 Stopped
加载更多回复(10)
多
线程
(一):创建
线程
和
线程
的常用方法
了解并发编程:实际工作中很少写
多
线程
的代码,这部分代码一般都被人封装起来了,在业务中使用
多
线程
的机会也不是很多(看具体项目),但是作为
一个
高级程序员如果不会
多
线程
是说不过去的。 二:进程与
线程
...
多
线程
面试题(值得收藏)
史上最强
多
线程
面试47题(含...原子性指的是
一个
或者多个
操作
,要么全部执行并且在执行的过程中不被其他
操作
打断,要么就全部都不执行。 2)可见性 可见性指多个
线程
操作
一个
共享变量时,其中
一个
线程
对变量进行修...
3-04
多
线程
相关
多
线程
是指
一个
进程(执行中的程序)同时运行多个
线程
(进程中负责程序执行的执行单元),
多
线程
可以协作完成进程工作,其目的是更好的利用 CPU 资源 Java
线程
具有五中基本状态 新建状态(New):当
线程
对象对创建...
Java怎样
中断
一个
运行中的
线程
(1)
编程人员在编程过程中,
多
线程
呈现出了
一组
新的难题,而如何
中断
一个
正在运行的
线程
则是难题之一。本文中,作者将讲述相关的方法。 <br />程序是很简易的。然而,在编程人员面前,
多
线程
呈现出了
一组
新的难题,...
如何确保
多
线程
已经全部执行完成
CountDownLatch可以使
一个
或多个
线程
等待
一组
事件的发生,闭锁状态包含
一个
计数器,该计数器被初始化为
一个
正数,表示需要等待事件的数量。 发挥主要作用的两个方法分别是: countDown(); 递减计数器,表示
一个
事件...
C#
110,538
社区成员
642,577
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章