社区
C#
帖子详情
多线程的问题,还没想明白怎么实现
guostong
2011-04-04 11:32:15
单用户的模式下是这样的, 在主线程里创建一个第三方提供的对象(比如: OXMessage), 这个对象接收远程的消息, 通过设置的回调函数返回主线程.单用户下很容易实现.
当目前需要实现多用户,单线程下有竞争,所以打算用多线程来实现,但一般的多线程都是开始一个线程,做完一件任务就退出了,如何让线程一直等待回调函数呢?
请问有类似的例子吗?
谢谢
...全文
89
7
打赏
收藏
多线程的问题,还没想明白怎么实现
单用户的模式下是这样的, 在主线程里创建一个第三方提供的对象(比如: OXMessage), 这个对象接收远程的消息, 通过设置的回调函数返回主线程.单用户下很容易实现. 当目前需要实现多用户,单线程下有竞争,所以打算用多线程来实现,但一般的多线程都是开始一个线程,做完一件任务就退出了,如何让线程一直等待回调函数呢? 请问有类似的例子吗? 谢谢
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
龍过鸡年
2011-04-04
打赏
举报
回复
委托(C# 编程指南)
龍过鸡年
2011-04-04
打赏
举报
回复
Thread 类
guostong
2011-04-04
打赏
举报
回复
关键是想把回调函数放到线程里面去.
guostong
2011-04-04
打赏
举报
回复
单线程的代码:
public class MyMessage
{
OXMessage ox = new OXMessage();
public void init(string accID)
{
ox.setAccount(accID); // 不同的帐号
ox.start(callbackentry); // 设置回调函数
}
public void callbackentry()
{
//具体的操作
}
}
如果同时创建多个 mymessage class来对应多个帐号, 其实还是单线程:
主线程中:
public MyMessage[] m_mymessage = new MyMessage[20];
for (int i=0;i<=20;i++)
{
mymessage[i].init(strAcc[i]);
}
这样是单线程里跑多个帐号,如果我想用多线程来跑多个帐号,应该如何实现?
以专业开发人员为伍
2011-04-04
打赏
举报
回复
在说明白一点把。我看不懂你说的“通过设置的回调函数返回主线程”是什么什么意思。如果你说的就是上述那种单线程COM机制,那么这其实也不是什么主线程在“主线程在一直等待回调函数”,而是主线程(窗体消息本来就在主线程上执行,然后才触发了你说的OXMessage代码)去执行回调——而无需等待。
多线程也是这样——无需等待。线程A上的程序调用了另一个线程上的程序B,等B回调时它该在哪个线程上就在哪个线程上执行代码,跟A无关。
以专业开发人员为伍
2011-04-04
打赏
举报
回复
你所说的OXMessage我不知道是什么东西。假设它是类似vb的com组件那种东西,它就是在(隐藏的)窗体线程的消息循环中被驱动,也就是说是窗体主线程驱动了事件发生,然后这个OXMessage继续执行在窗体主线程上,然后回调时还是在窗体主线程。这时候,它就不知道去使用.net意义上的子线程。
我不知道你说的“打算用多线程来实现”是什么意思。但是如果你在.net多线程下去调用这类COM组件,其实也没有什么多线程的作用。
以专业开发人员为伍
2011-04-04
打赏
举报
回复
[Quote=引用楼主 guostong 的回复:]
当目前需要实现多用户,单线程下有竞争,所以打算用多线程来实现,但一般的多线程都是开始一个线程,做完一件任务就退出了,如何让线程一直等待回调函数呢?
[/Quote]
没有什么“线程一直等待回调函数”这一说。当回调函数被调用,它就是在子线程中被调用,跟主线程没有关系。
Android 高效的图片加载框架(非第三方)程序源码
代码为博客的实例代码,有
问题
请博客留言:http://blog.csdn.net/lmj623565791/article/details/41874561
【Java基础教程】(四十二)
多线程
篇 · 上:多进程与
多线程
、并发与并行的关系,
多线程
的
实现
方式、线程流转状态、常用操作方法解析~
本文主要介绍了
多线程
编程中的关键概念以及常用的操作方法。首先,我们了解了线程与进程之间的关系,
明白
了多进程、
多线程
、并发和并行之间的区别。接着,我们探讨了
多线程
的
实现
方式,包括继承Thread类、
实现
Runnable接口和利用Callable接口
实现
多线程
,并对它们进行了比较和分析。然后,我们详细讲解了线程的操作状态,帮助读者理解线程在不同状态间的转换情况。最后,我们介绍了
多线程
常用的操作方法,如线程的命名与获取、线程的休眠、线程优先级、线程等待和线程让出执行权等。
java
多线程
的6种
实现
方式详解
多线程
的形式上
实现
方式主要有两种,一种是继承Thread类,一种是
实现
Runnable接口。本质上
实现
方式都是来
实现
线程任务,然后启动线程执行线程任务(这里的线程任务实际上就是run方法)。这里所说的6种,实际上都是在以上两种的基础上的一些变形。 继承Thread类 万物皆对象,那么线程也是对象,对象就应该能够抽取其公共特性封装成为类,使用类可以实例化多个对象,那么
实现
线程的第一种方式就是继承...
QT
多线程
的四种
实现
在QT环境下进行桌面应用程序开发的时候,应用程序在某些情况下需要处理比较复杂的逻辑, 如果只有一个线程去处理,易导致窗口卡顿。这种情况下就需要使用
多线程
,其中一个线程处理窗口事件,其他线程进行各自相关的逻辑操作,用户体验和程序的执行效率都显著提高。在qt中使用了
多线程
,有些事项是需要额外注意的:默认的线程在Qt中称之为窗口线程,也叫主线程,负责窗口事件处理或者窗口控件数据的更新;子线程负责后台的业务逻辑处理,子线程中不能对窗口对象做任何操作,, 如果操作了程序就会崩溃;
Java
多线程
实现
的四种方式
Java
多线程
实现
的方式有四种 1.继承Thread类,重写run方法 2.
实现
Runnable接口,重写run方法,
实现
Runnable接口的
实现
类的实例对象作为Thread构造函数的target 3.通过Callable和FutureTask创建线程 4.通过线程池创建线程 .........
C#
111,098
社区成员
642,554
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章