Questions tagged «multithreading»

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

8
Powershell可以并行运行命令吗?
我有一个powershell脚本来对一堆图像进行一些批处理,我想进行一些并行处理。Powershell似乎有一些后台处理选项,例如start-job,wait-job等,但是我发现进行并行工作的唯一好资源是编写脚本文本并运行它们(PowerShell Multithreading) 理想情况下,我想要类似于.net 4中的并行foreach的东西。 看起来很像的东西: foreach-parallel -threads 4 ($file in (Get-ChildItem $dir)) { .. Do Work } 也许我最好只是下降到C#...

4
Java线程在循环中执行剩余操作会阻塞所有其他线程
以下代码段执行两个线程,一个是每秒记录一个简单的计时器,第二个是执行余数运算的无限循环: public class TestBlockingThread { private static final Logger LOGGER = LoggerFactory.getLogger(TestBlockingThread.class); public static final void main(String[] args) throws InterruptedException { Runnable task = () -> { int i = 0; while (true) { i++; if (i != 0) { boolean b = 1 % i == 0; } } …

3
不对TPL Task对象调用Dispose()是否可以接受?
我想触发任务在后台线程上运行。我不想等待任务完成。 在.net 3.5中,我应该这样做: ThreadPool.QueueUserWorkItem(d => { DoSomething(); }); 在.net 4中,建议使用TPL。我看到的推荐的常见模式是: Task.Factory.StartNew(() => { DoSomething(); }); 但是,该StartNew()方法返回一个Task实现的对象IDisposable。推荐这种模式的人似乎忽略了这一点。有关该Task.Dispose()方法的MSDN文档说: “在释放对任务的最后引用之前,请始终致电Dispose。” 您不能在任务完成之前对其进行调用处置,因此让主线程等待并进行调用处置首先会破坏在后台线程上执行任务的目的。似乎也没有任何可用于清理的完成/完成事件。 Task类的MSDN页面没有对此发表评论,而《 Pro C#2010 ...》这本书推荐了相同的模式,并且对任务处理没有评论。 我知道如果我只留下它,终结器最终会抓住它,但是当我做很多工作而忘了像这样的任务而终结器线程不堪重负时,这会回来咬我吗? 所以我的问题是: 是否可以接受不叫Dispose()就Task在这种情况下类?如果是这样,为什么而且存在风险/后果? 有没有讨论这个的文档? 还是有适当的方法来处理Task我错过的对象? 还是有另一种通过TPL做事忘了任务的方法?

11
线程安全是什么意思?
最近,我尝试从线程(UI线程除外)访问文本框,并引发了异常。它说了一些有关“代码不是线程安全的”的内容,因此我最终编写了一个委托(MSDN的示例有所帮助)并改为调用它。 但是即使如此,我还是不太明白为什么所有额外的代码都是必需的。 更新:如果我检查,是否会遇到任何严重的问题 Controls.CheckForIllegalCrossThread..blah =true


2
在executeFetchRequest上“枚举时对集合进行了变异”
我一直困扰着一个小时,并且已经在stackoverflow上阅读了有关此问题的所有内容(并应用了发现的所有建议),现在我正式需要帮助。; o) 这是上下文: 在我的iPhone项目中,我需要在后台导入数据并将其插入到托管对象上下文中。遵循此处找到的建议,这是我正在做的事情: 保存主moc 使用主Moc使用的持久存储协调器实例化背景Moc 将我的控制器注册为后台moc的NSManagedObjectContextDidSaveNotification通知的观察者 在后台线程上调用import方法 每次接收到数据时,将其插入后台Moc 导入所有数据后,保存后台Moc 将更改合并到主线程中的主线程中 注销我的控制器作为通知的观察者 重置并释放后台Moc 有时(随机),例外情况... *** Terminating app due to uncaught exception 'NSGenericException', reason: '*** Collection <__NSCFSet: 0x5e0b930> was mutated while being enumerated... 当我在后台Moc上调用executeFetchRequest来检查导入的数据是否已存在于数据库中时,会抛出...。我想知道是什么使集合发生了变化,因为没有任何方法可以在import方法之外运行。 我已经包含了控制器和测试实体的全部代码(我的项目由这两个类和应用程序委托组成,它们未经修改): // // RootViewController.h // FK1 // // Created by Eric on 09/08/10. // Copyright (c) 2010 …


5
如何在Java中运行类的不同实例的线程之间同步静态变量?
我知道synchronize在方法带来同步到该对象之前使用关键字。也就是说,运行对象的同一实例的2个线程将被同步。 但是,由于同步是在对象级别进行的,因此运行对象的不同实例的2个线程将不会同步。如果在Java类中有一个由该方法调用的静态变量,则希望在类的各个实例之间进行同步。这两个实例在2个不同的线程中运行。 我们可以通过以下方式实现同​​步吗? public class Test { private static int count = 0; private static final Object lock= new Object(); public synchronized void foo() { synchronized(lock) { count++; } } } 确实如此,因为我们已经定义了一个lock静态对象,并且正在使用该synchronized锁的关键字,所以static变量count现在可以在class实例之间进行同步Test?

9
为什么不鼓励在Java EE容器中生成线程?
关于Java EE开发的第一件事是,我不应该在Java EE容器中生成自己的线程。但是当我考虑它时,我不知道原因。 您能清楚地解释为什么不鼓励这样做吗? 我确信大多数企业应用程序都需要某种异步作业,例如邮件守护程序,空闲会话,清理作业等。 因此,如果确实不应该产生线程,那么在需要时正确的方法是什么?

4
C#中的重入锁
下面的代码是否会在.NET上使用C#导致死锁? class MyClass { private object lockObj = new object(); public void Foo() { lock(lockObj) { Bar(); } } public void Bar() { lock(lockObj) { // Do something } } }

2
Linux中具有多个线程的信号处理
在Linux中,当程序(可能具有多个线程)接收到诸如SIGTERM或SIGHUP之类的信号时会发生什么? 哪个线程拦截信号?多个线程可以得到相同的信号吗?是否有专门用于处理信号的特殊线程?如果不是,那么在处理信号的线程内部会发生什么?信号处理程序例程完成后,如何恢复执行?
119 c  linux  multithreading  signals  ipc 

8
python multithreading等到所有线程完成
可能是在类似的情况下提出的,但是经过大约20分钟的搜索,我无法找到答案,所以我会提出。 我写了一个Python脚本(让我们说:scriptA.py)和一个脚本(让我们说scriptB.py)。 在scriptB中,我想使用不同的参数多次调用scriptA,每次运行大约需要一个小时(它是一个巨大的脚本,做了很多事情。。不用担心),并且我希望能够运行scriptA同时具有所有不同的参数,但是我需要等到所有参数都完成后才能继续;我的代码: import subprocess #setup do_setup() #run scriptA subprocess.call(scriptA + argumentsA) subprocess.call(scriptA + argumentsB) subprocess.call(scriptA + argumentsC) #finish do_finish() 我想同时运行所有程序subprocess.call(),然后等到它们全部完成后,该怎么办? 我试图像这里的例子一样使用线程: from threading import Thread import subprocess def call_script(args) subprocess.call(args) #run scriptA t1 = Thread(target=call_script, args=(scriptA + argumentsA)) t2 = Thread(target=call_script, args=(scriptA + argumentsB)) t3 = Thread(target=call_script, args=(scriptA + …


1
假人的ApartmentState
我只是使用以下方法纠正了一个错误: _Thread.SetApartmentState(ApartmentState.STA); 现在,我想了解它的含义以及它为什么起作用!

8
Java Singleton和同步
请阐明有关单例和多线程的查询: 在多线程环境中用Java实现Singleton的最佳方法是什么? 当多个线程尝试同时访问getInstance() 方法时会发生什么? 我们可以做单身的吗 getInstance() synchronized吗? 使用Singleton类时,真的需要同步吗?

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.