Questions tagged «multithreading»

多线程是计算机或程序通过利用多个并发的执行流(通常称为线程)来并发或异步执行工作的能力。

26
我应该如何对线程代码进行单元测试?
到目前为止,我已经避免了测试多线程代码的噩梦,因为它似乎就像雷区一样。我想问人们如何去测试依赖于线程的代码才能成功执行,或者人们如何去测试仅当两个线程以给定方式交互时才会出现的那些类型的问题? 对于当今的程序员来说,这似乎是一个非常关键的问题,将我们的知识集中在这一恕我直言中将很有用。

22
volatile关键字对
今天的工作中,我遇到了volatileJava中的关键字。不太熟悉,我发现了以下解释: Java理论与实践:管理波动 鉴于该文章详细解释了所讨论的关键字,您是否曾经使用过它,或者是否曾经遇到过可以正确使用该关键字的情况?

9
易失性,连锁性与锁定
假设一个类具有一个public int counter可由多个线程访问的字段。这int仅递增或递减。 要增加此字段,应使用哪种方法,为什么? lock(this.locker) this.counter++;, Interlocked.Increment(ref this.counter);, 将的访问修饰符更改counter为public volatile。 现在我已经发现volatile,我已经删除了许多lock语句和对的使用Interlocked。但是,有理由不这样做吗?


22
跨线程操作无效:从创建该线程的线程以外的线程访问控件
我有一个场景。(Windows窗体,C#、. NET) 有一个主窗体可以承载一些用户控件。 用户控件执行一些繁重的数据操作,因此,如果我直接调用该UserControl_Load方法,则UI将在装入方法执行期间无响应。 为了克服这个问题,我将数据加载到不同的线程上(尝试尽我所能更改现有代码) 我使用了一个后台工作线程来加载数据,完成后将通知应用程序它已经完成了工作。 现在出现了一个真正的问题。所有UI(主窗体及其子用户控件)均在主主线程上创建。在usercontrol的LOAD方法中,我基于userControl上某些控件(如文本框)的值获取数据。 伪代码如下所示: 代码1 UserContrl1_LoadDataMethod() { if (textbox1.text == "MyName") // This gives exception { //Load data corresponding to "MyName". //Populate a globale variable List<string> which will be binded to grid at some later stage. } } 它给的例外是 跨线程操作无效:从创建该线程的线程以外的线程访问控件。 要了解更多信息,我进行了一些谷歌搜索,并提出了一条建议,例如使用以下代码 代码2 UserContrl1_LoadDataMethod() { if (InvokeRequired) …



16
为什么锁{this}不好?
在MSDN文档说, public class SomeObject { public void SomeOperation() { lock(this) { //Access instance variables } } } 是“是否可以公开访问该实例的问题”。我想知道为什么吗?是因为锁的持有时间超过了必要?还是还有其他更阴险的原因?

11
Looper的用途是什么?如何使用它?
我是Android新手。我想知道Looper该类的作用以及如何使用它。我已经阅读了Android Looper类文档,但无法完全理解。我在很多地方都看到过它,但无法理解它的目的。任何人都可以通过定义目标Looper以及通过给出一个简单示例来帮助我吗?

18
如何在PHP应用程序中使用多线程
是否有一种实际的方法可以在PHP中实现多线程模型,无论是真正的还是仅对其进行仿真。一段时间以前,建议您可以强制操作系统加载PHP可执行文件的另一个实例并处理其他同时进行的进程。 问题在于,当PHP代码完成执行PHP实例时,它仍保留在内存中,因为无法从PHP中杀死它。因此,如果您正在模拟多个线程,则可以想象会发生什么。因此,我仍在寻找一种可以在PHP中有效完成或模拟多线程的方法。有任何想法吗?




7
C ++中线程的简单示例
这个问题的答案是社区的努力。编辑现有答案以改善此职位。它目前不接受新的答案或互动。 有人可以发布一个简单的示例来说明如何在C ++中启动两个(面向对象)线程。 我正在寻找可以扩展运行方法(或类似方法)的实际C ++线程对象,而不是调用C样式线程库。 我遗漏了所有特定于OS的请求,希望任何答复的人都可以使用跨平台库进行答复。我现在将其明确。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.