社区
C++ Builder
帖子详情
线程同步问题
zl811103
2009-09-16 08:10:55
加精
我想让两个线程循环执行,也就是线程1执行线程2刮起,线程1执行完毕挂起,线程2启动,线程2执行完毕挂起,线程1执行,如此循环,如何实现?
...全文
1458
129
打赏
收藏
线程同步问题
我想让两个线程循环执行,也就是线程1执行线程2刮起,线程1执行完毕挂起,线程2启动,线程2执行完毕挂起,线程1执行,如此循环,如何实现?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
129 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
僵哥
2009-10-05
打赏
举报
回复
一个线程足够了,如果想进行逻辑分离,建议用纤程(Fiber).
xuanner
2009-10-05
打赏
举报
回复
线程同步有四种方法处理,分别是:
1.互斥锁------用CreateMetux函数[一对一的线程通信]
2.信号量------用CreateSemphore函数[一对多的线程通信]
3.事件------用CreateEvent函数[事件线程通信]
4.条件变量------就是用外部全局变量啦![公用的]
angeling2009
2009-09-27
打赏
举报
回复
[Quote=引用 17 楼 haiandj 的回复:]
建议自己做个控制程序,控制他们交替,最好不要放任线程
[/Quote]
好久不见 我最近也要开始研究线程的这个可恶的东西了。。。
sczyq
2009-09-24
打赏
举报
回复
只需采用一公共变量控制即可,不符合条件时空转即可。
网际飞蚁
2009-09-24
打赏
举报
回复
可以使用互斥量来做,或者使用临界区(系统开销小,不能在不同进程互斥)也可以!
线程A:
hThreadCommandMutex = CreateMutex(NULL,false,"Thread_Command_Mutex");
while(!Terminated)
{
dwResult = WaitForSingleObject(hThreadCommandMutex,INFINITE);
if(dwResult != WAIT_OBJECT_0)
{
//系统崩溃
break;
}
DoSomethingA();
ReleaseMutex(hThreadCommandMutex);
}
CloseHandle(hThreadCommandMutex);
线程B:
hThreadCommandMutex = CreateMutex(NULL,false,"Thread_Command_Mutex");
while(!Terminated)
{
dwResult = WaitForSingleObject(hThreadCommandMutex,INFINITE);
if(dwResult != WAIT_OBJECT_0)
{
//系统崩溃
break;
}
DoSomethingB();
ReleaseMutex(hThreadCommandMutex);
}
CloseHandle(hThreadCommandMutex);
yuanwenqun2
2009-09-21
打赏
举报
回复
应该就是uc/os里头讲的那样,信号量就可以了吧
zhl3597
2009-09-20
打赏
举报
回复
[Quote=引用 16 楼 feiyongxihua 的回复:]
哈哈哈哈哈哈哈哈哈哈哈
[/Quote]同意,线程太容易出错了
WEED1234567
2009-09-20
打赏
举报
回复
好
Mylovesting
2009-09-20
打赏
举报
回复
[Quote=引用 28 楼 lemonash2007 的回复:]
WaitForSingleObject可以满足 查查WaitForSingleObject的用法
[/Quote]
推荐这个
体验太差
2009-09-20
打赏
举报
回复
这样的模型可以不:
ThreadA :
while(true)
{
doSomeThing();
notify(signalB)
wait(signalA);
}
ThreadB :
while(true)
{
doSomeThing();
notify(signalA)
wait(signalB);
}
这个可行,我们的项目就是使用这个模型的,不过在嵌入式OS中。
nichonas
2009-09-20
打赏
举报
回复
谢谢,谢谢楼主提供
solarwindsj
2009-09-19
打赏
举报
回复
程序员啊,去补习一下计算机科学基础知识再出来混吧。
追光的猫
2009-09-19
打赏
举报
回复
我在书上看到了,大概是这个样子
public class Test(){
new MyThread(1).start();
new MyThread(2).start();
}
class MyThread extends Thread(){
private i = 0;
static Object washroom = new Object();
private MyThread(int i){
this.i = i;
}
public void run(){
synchronized(washroom){ //轮流获得washroom的锁
try{
if(i == 1){
brush();
washroom.wait();
washroom.notify();
}else{
brush();
washroom.notify();
washroom.wait();
}
}catch(InterruptedException e){
e.printStackTrace();
}
}
}
}
wenchang9999
2009-09-19
打赏
举报
回复
找程序开发高手,测试设备方面的,要有独立完成项目的能力,可联系0755-29053456,单小姐
ck_se7en
2009-09-19
打赏
举报
回复
同意90楼的
kj111111
2009-09-19
打赏
举报
回复
学习学习。。。。。。。。。
hankuo
2009-09-19
打赏
举报
回复
VB.net 2005 的多线程功能怎样?实时性强吗?
gao337536127
2009-09-19
打赏
举报
回复
路过
建议楼主在linux下开发
很简单
gao337536127
2009-09-19
打赏
举报
回复
路过
但建议楼主在linux下开发
很简单的哦
hujun_zero
2009-09-19
打赏
举报
回复
线程标志位
加载更多回复(107)
POSIX多线程程序设计.pdf
内容简介 《POSIX多线程程序设计》深入描述了IEEE的开放系统接口标准——POSIX线程,通常称为Pthreads标准。本书首先解释了线程的基本概念,包括异步编程、线程的生命周期和同步机制;然后讨论了一些高级话题,包括属性对象、线程私有数据和实时调度。此外,本书还讨论了调度的
问题
,并给出了避免错误和提高性能等
问题
的有价值的建议。本书使用了大量注释过后 实例来解释实际的概念,并包括Pthreads的简单索引和对标准化的展望。 《POSIX多线程程序设计》适合有经验的C语言程序员阅读,也适合多线程人员参考。
Android应用程序消息处理机制
Android应用程序与传统的PC应用程序一样,都是消息驱动的。也就是说,在Android应用程序主线程中,所有函数都是在一个消息循环中执行的。Android应用程序其它线程,也可以像主线程一样,拥有消息循环。Android应用程序主线程是一个特殊的线程,因为它同时也是UI线程以及触摸屏、键盘等输入事件处理线程。主线程对消息循环很敏感,一旦发生阻塞,就会影响UI的流畅度,甚至发生ANR
问题
。这个PPT讲Android应用程序线程消息循环原理,主要涉及到Handler和Looper两个类,以及根据消息循环的不同使用场景,总结出三种线程使用模型。掌握Android应用程序消息处理机制,有助于我们熟练地使用同步和异步编程,提高程序的运行性能
秒杀多线程第四篇 一个经典的多
线程同步
问题
上一篇《秒杀多线程第三篇原子操作 Interlocked系列函数》中介绍了原子操作在多进程中的作用,现在来个复杂点的。这个
问题
涉及到线程的同步和互斥,是一道非常有代表性的多
线程同步
问题
,如果能将这个
问题
搞清楚,那么对多
线程同步
也就打下了良好的基础。 程序描述:主线程启动10个子线程并将表示子线程序号的变量地址作为参数传递给子线程。子线程接收参数 -> sleep(50) -> 全局变量++ ->
【多线程】
线程同步
问题
的三种解决方法
目录一、前言二、同步代码块三、同步方法四、Lock方法五、总结 一、前言 解决
线程同步
问题
有三种方式:同步代码块、同步方法、锁(JDK5新增) 使用synchronized 解决
线程同步
问题
要时时刻刻注意要使用同一个同步监视器,特别是在继承创建多线程是要格外注意。 二、同步代码块 1、语法 synchronized(同步监视器){ 需要被同步的代码 } 2、对语法的说明 需要被同步的代码就是操作共享数据的代码 同步监视器可以是任何类的对象,但必须是唯一的 实现创建多线程的案
线程不同步的原因,如何同步,简单的防止程序多开
多线程编程中主要的
问题
是
线程同步
问题
。 1.什么时间需要
线程同步
访问共同的内存数据 2.为什么需要
线程同步
多线程程序在执行时由于windows系统机制,会在线程之间来回切换俗称切时间片,当我们的程序没有进行
线程同步
处理时,Window切时间片不在我们的受控范围内,也就是我们的代码在执行时由于切时间片的原因代码可能会跑到一片被切走执行其他线程的代码,此时我们不知道代码执行到了何处,这种是
C++ Builder
13,825
社区成员
102,679
社区内容
发帖
与我相关
我的任务
C++ Builder
C++ Builder相关内容讨论区
复制链接
扫一扫
分享
社区描述
C++ Builder相关内容讨论区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章