社区
C#
帖子详情
多线程的问题,还没想明白怎么实现
guostong
2011-04-04 11:32:15
单用户的模式下是这样的, 在主线程里创建一个第三方提供的对象(比如: OXMessage), 这个对象接收远程的消息, 通过设置的回调函数返回主线程.单用户下很容易实现.
当目前需要实现多用户,单线程下有竞争,所以打算用多线程来实现,但一般的多线程都是开始一个线程,做完一件任务就退出了,如何让线程一直等待回调函数呢?
请问有类似的例子吗?
谢谢
...全文
121
7
打赏
收藏
多线程的问题,还没想明白怎么实现
单用户的模式下是这样的, 在主线程里创建一个第三方提供的对象(比如: OXMessage), 这个对象接收远程的消息, 通过设置的回调函数返回主线程.单用户下很容易实现. 当目前需要实现多用户,单线程下有竞争,所以打算用多线程来实现,但一般的多线程都是开始一个线程,做完一件任务就退出了,如何让线程一直等待回调函数呢? 请问有类似的例子吗? 谢谢
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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]
没有什么“线程一直等待回调函数”这一说。当回调函数被调用,它就是在子线程中被调用,跟主线程没有关系。
一文搞
明白
Python
多线程
编程:threading库
本文深入探讨了Python中的并行与并发概念,通过Erlang之父的咖啡机比喻进行解释。详细阐述了进程与线程的区别,包括它们的定义、联系以及全局解释器锁GIL的影响。接着,介绍了Python的`threading`库,展示了如何创建和管理线程,包括普通创建、自定义线程、守护线程、线程同步和线程池的使用。此外,还详细讲解了各种同步机制,如Semaphore、Lock、RLock、Condition和Event。最后,通过实际示例展示了Queue在
多线程
中的应用。总结了Python
多线程
编程的关键点,并指出在Python中通常使用多进程或协程来
实现
并发执行。
c++
多线程
并发的原理及
实现
本文详细介绍了C++中的
多线程
并发编程,包括线程、进程的基本概念,
多线程
并发的
实现
方式,以及C++中std::thread的使用。同时,讲解了互斥量、锁、条件变量等同步机制,并通过生产者消费者
问题
展示了其
实现
。强调了线程数量控制和并发使用场景选择的重要性,以及线程间参数传递的细节。
详细解释
多线程
和多进程,看完你就
明白
了
本文详细介绍了Python中并发编程的多种方式,包括threading、multiprocessing、asyncio模块,以及锁、队列、线程池等工具的使用。通过实例展示了CPU密集型计算和IO密集型计算在多进程、
多线程
下的性能差异,并探讨了GIL对Python性能的影响。此外,还讲解了线程安全
问题
、线程池的原理及Flask中使用线程池加速IO的方法。最后,通过asyncio
实现
了异步IO,展示了如何利用信号量控制并发数。
一篇文章,搞
明白
异步和
多线程
的区别
文章介绍了异步编程和
多线程
的概念,异步编程允许多个事件并发处理,不阻塞程序执行,而
多线程
是在单核或多核处理器上的并发执行。异步编程常通过回调函数
实现
,
多线程
则涉及线程间的切换和调度。两者的区别在于异步关注任务的非阻塞执行,
多线程
关注功能的并发。选择异步或
多线程
取决于应用的性能需求,且两者都有其特定的挑战,如异步的回调复杂性和
多线程
的资源竞争
问题
。
HashMap
多线程
死循环
问题
本文通过
实现
测试程序,深入解析Java HashMap在
多线程
环境下的并发
问题
,特别是当两个线程同时进行put操作时触发rehash操作导致的循环节点形成,最终引起get操作死循环并丢失部分元素的
问题
。
C#
111,130
社区成员
642,541
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章