社区
C++ Builder
帖子详情
线程同步问题
zl811103
2009-09-16 08:10:55
加精
我想让两个线程循环执行,也就是线程1执行线程2刮起,线程1执行完毕挂起,线程2启动,线程2执行完毕挂起,线程1执行,如此循环,如何实现?
...全文
1457
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
本书首先解释了线程的基本概念,包括异步编程、线程的生命周期和同步机制;然后讨论了一些高级话题,包括属性对象、线程私有数据和实时调度。此外,本书还讨论了调度的
问题
,并给出了避免错误和提高性能等
问题
的有...
Android应用程序消息处理机制
Android应用程序与传统的PC应用程序一样,都是消息驱动的。也就是说,在Android应用程序主线程中,所有函数都是在一个...掌握Android应用程序消息处理机制,有助于我们熟练地使用同步和异步编程,提高程序的运行性能
JAVA多线程精讲下
线程的同步(线程安全
问题
)l 线程的死锁l 线程间通信l 线程组l 线程池l 多线程的第三种实现方案l 匿名内部类方式使用多线程l 定时器的使用l 多线程面试题
秒杀多线程第四篇 一个经典的多
线程同步
问题
这个
问题
涉及到线程的同步和互斥,是一道非常有代表性的多
线程同步
问题
,如果能将这个
问题
搞清楚,那么对多
线程同步
也就打下了良好的基础。 程序描述:主线程启动10个子线程并将表示子线程序号的变量地址作为参数...
【多线程】
线程同步
问题
的三种解决方法
解决
线程同步
问题
有三种方式:同步代码块、同步方法、锁(JDK5新增) 使用synchronized 解决
线程同步
问题
要时时刻刻注意要使用同一个同步监视器,特别是在继承创建多线程是要格外注意。 二、同步代码块 1、语法 ...
C++ Builder
13,825
社区成员
102,679
社区内容
发帖
与我相关
我的任务
C++ Builder
C++ Builder相关内容讨论区
复制链接
扫一扫
分享
社区描述
C++ Builder相关内容讨论区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章