Tag: multithreading

如何在Delphi中以各种方式进行线程处理?

似乎我终于在我的Delphi 2009程序中实现了某种线程化。 如果只有一种方法可以做到,我就可以跑步了。 但是我看到了几种可能性。 任何人都可以解释这些之间有什么区别,为什么我会select另一个。 Delphi中的TThread类 由Andreas Hausladen提供的 AsyncCalls OmniThreadLibrary由Primoz Gabrijelcic(gabr) …任何其他人? 编辑: 我刚刚在2010年3月(第10期)“ 布莱斯·帕斯卡杂志 ”( Blaise Pascal Magazine)的一篇题为“四种创造线索”的文章中,阅读了Gabr的一篇优秀文章。 你必须订阅获得杂志的内容,所以通过版权,我不能在这里再现任何实质性内容。 总之,Gabr描述了使用TThreads,直接Windows API调用,Andy的AsyncCalls和他自己的OmniThreadLibrary之间的区别。 他最后得出结论: “我并不是说你不得不select比传统的delphi方式(TThread)还要多的东西,但是把你的select通知你还是很好的” Mghie的回答非常彻底,build议OmniThreadLibrary可能更可取。 但是我仍然对每个人(或者任何人)应该如何select他们的线程方法感兴趣。 你可以添加到列表中: 。 4.直接调用Windows API 。 5. LachlanG在答复中提出的Misha Charrett的 CSI分布式应用程序框架 。 结论: 我可能会去OmniThreadLibrary。 我喜欢Gabr的工作。 多年前我使用过他的profiler GPProfile,而且我正在使用他的GPStringHash,它实际上是OTL的一部分。 一旦Embarcadero将这个function添加到Delphi中,我唯一的担心就是升级它来处理64位或者Unix / Mac处理。

Java中的死锁检测

很久以前,我从一本Java参考书中保存了一句话: “Java没有处理死锁的机制,甚至不知道发生了死锁。 (Head First Java第2版,第516页) 那么,这是什么呢? 有没有办法在Java中捕获死锁的情况? 我的意思是,有没有一种方法可以让我们的代码理解一个僵局?

什么时候应该使用ExecutorService上的CompletionService?

我在这个博客文章中发现了CompletionService。 但是,这并没有真正展示CompletionService比标准ExecutorService更有优势。 相同的代码也可以写入。 那么,CompletionService何时有用呢? 你可以给一个简短的代码样本,使其透明? 例如,这个代码示例只显示不需要CompletionService(=相当于ExecutorService) ExecutorService taskExecutor = Executors.newCachedThreadPool(); // CompletionService<Long> taskCompletionService = // new ExecutorCompletionService<Long>(taskExecutor); Callable<Long> callable = new Callable<Long>() { @Override public Long call() throws Exception { return 1L; } }; Future<Long> future = // taskCompletionService.submit(callable); taskExecutor.submit(callable); while (!future.isDone()) { // Do some work… System.out.println("Working on something…"); } try { System.out.println(future.get()); } […]

区分Java线程和OS线程?

如何区分正在运行的Java线程和本地线程? 在Linux中,每个subprocess都有父进程,并且他们说0是所有进程的父进程,所有分叉的Java线程的父进程是否会有? 如何知道哪个Java线程与OS线程相关(如果Java线程阻塞了本机进程线程)。 Java线程和操作系统线程是否有任何命名约定? 一个正在运行的Java线程可以被另一个Java代码挂起或者死亡吗?

从线程返回一个值?

如何从线程返回值?

multithreading参考?

我正在问一个很好的参考multithreading编程的概念与良好的例子使用C + + / C#?

公寓状态为假人

我刚刚纠正了一个错误使用这个: _Thread.SetApartmentState(ApartmentState.STA); 现在我想了解它是什么意思,为什么它的作品!

Scala中的asynchronousIO与期货

比方说,我正在从某些url上下载(可能很大)的图片列表。 我正在使用Scala,所以我会做的是: import scala.actors.Futures._ // Retrieve URLs from somewhere val urls: List[String] = … // Download image (blocking operation) val fimages: List[Future[…]] = urls.map (url => future { download url }) // Do something (display) when complete fimages.foreach (_.foreach (display _)) 我对Scala有点新鲜,所以对我来说这仍然有点像魔术: 这是正确的做法吗? 任何替代品,如果不是? 如果我有100个图像下载,这将创build100个线程一次,或将使用线程池? 最后一条指令( display _ )是否会在主线程上执行,如果没有,我怎么确定它? 谢谢你的build议!

处理程序,MessageQueue,Looper,他们都运行在UI线程?

我试图围绕线程化头,而且我知道我可以使用Handler将消息/ runnables发布到MessageQueue ,然后由Looper并发送回Handler进行处理。 如果我发布到我的活动中的处理程序, Activity , Handler , MessageQueue和Looper都在UI线程上运行? 如果没有,请问有人能解释一下这一切吗? 🙂

条件variables与信号量

何时应该使用信号量,何时应该使用条件variables(CondVar)?