multithreading相关内容

跨线程事件信号(Obj-C)的同步/等待设计?

在 Cocoa 应用程序中,我有这样的设置: 主线程 (M) 可以向某个后台“生产者"线程 (B) 提交请求以完成某些工作,例如对项目 X 的​​计算结果. 此后不久,另一个后台线程 (C) 可能想要计算项目 X 的​​结果,并希望这些结果同步. 线程 C 可以自己同步重做工作,但是如果线程 B 恰好在计算项 X 的中间,我希望线程 C 阻塞并从 B 获取结果.计算结果可以在磁盘上找 ..
发布时间:2022-01-22 20:37:23 移动开发

线程同步 - 如何交替执行线程

我一直在尝试使用 wait() 和 notify() 解决涉及线程通信的问题.基本上我有 2 个线程 T1 和 T2,我希望它们按以下顺序执行 T1,T2,T1,T2 .....我怎样才能做到这一点? 实际问题:有 2 个线程 T1 - 打印奇数(比如 1 - 100)和 T2 - 打印偶数(1 - 100).现在,输出应该是 1, 2, 3, 4 , 5 , .... 100 ..
发布时间:2022-01-22 20:36:10 Java开发

如何在 JNI 环境的本机端正确同步线程?

问题简介 我通过 JNI 在一个进程中使用 C++ 和 Java.对于有问题的用例,C++ 线程和 Java 线程都在访问相同的数据,它们在 C++ 端这样做,我想正确同步访问. 到目前为止,我几乎所有的 JNI 线程同步都在 Java 端,答案很明显:使用提供的 Java 并发包和内置的并发语言特性.不幸的是,答案在 C++ 方面并不那么明显. 到目前为止我的尝试简介 我 ..

对 MPI_Barrier 的调用会影响 MPI 进程中的每个线程吗?

对 MPI_Barrier 的调用会影响 MPI 进程中的每个线程还是仅影响线程打电话?供您参考,我的 MPI 应用程序将使用 MPI_THREAD_MULTIPLE 运行. 谢谢. 解决方案 这样想的方式是 MPI_Barrier(和其他集合体)是阻塞函数调用,它阻塞直到通信器中的所有进程都完成了函数.我认为,这使得弄清楚应该发生什么变得更容易一些.功能块,但其他线程继续畅通无阻. ..
发布时间:2022-01-22 20:33:09 其他开发

从 Qt 中的多个线程绘图

我正在用 Qt 编写一个程序,它运行 10 个工作线程来计算对象在空间中的轨迹.他们还必须绘制对象的路径.我有一个派生 QGraphicsEllipseItem 的“Body"类,其中有一个 QPainterPath.“模拟"类获取世界中的障碍物列表,以及要模拟的身体并运行直到身体与某物碰撞.模拟在单独的线程中运行(使用 moveToThread 完成,而不是通过子类化 QThread).当身体发 ..
发布时间:2022-01-22 20:31:56 C/C++开发

如何在不同的应用程序级别锁定文件?

以下是场景:我有一个在 servlet 容器内运行的多线程 Java Web 应用程序.该应用程序在 servlet 容器内多次部署.有多个 servlet 容器在不同的服务器上运行. 也许这张图说明了: server1+- servlet 容器+- 应用程序1|+- 线程1|+- 线程2+- 应用程序2+- 线程1+- 线程2服务器2+- servlet 容器+- 应用程序1|+- 线程 ..
发布时间:2022-01-22 20:31:46 Java开发

是“双重检查锁定被破坏"仅限java的东西?

页面 http://www.cs.umd.edu/~pugh/java/memoryModel/DoubleCheckedLocking.html 说双重检查锁定在java中是有缺陷的.我只是想知道它是否也适用于其他语言(C#、Vb、C++ 等) 我已阅读 双重检查锁定模式:是否损坏?, 这是损坏的双重检查锁定吗?, 如何解决“双重检查锁定被破坏"Java 中的声明? 老实说,我不知道共同的 ..
发布时间:2022-01-22 20:30:14 Java开发

等待异步执行的块的 iOS(或 RubyMotion)习语是什么?

我已经为这个琐碎的问题烦恼了好几个星期,但我找不到任何关于如何或做什么的信息或提示,所以我希望 RubyMotion 论坛上的人可以帮助我. 如果这有点长,请提前道歉,但它需要一些设置才能正确解释问题.作为背景,我有一个使用在 Rails 应用程序中实现的 JSON/REST 后端的应用程序.这是非常简单的事情.后端工作正常,在某种程度上,前端也是如此.我可以调用在 RubyMotion 客 ..
发布时间:2022-01-22 20:29:50 移动开发

go lang中的同步不正确

在查看 golang 内存模型文档时(link),我发现go lang 上的一种奇怪行为.该文档说,下面的代码可能会发生 g 打印 2 然后 0. var a, b int函数 f() {a = 1b = 2}函数 g() {打印(b)打印(一)}功能主要(){去 f()G()} 这只是例行公事吗?因为我很好奇为什么变量'b'的赋值可以在'a'之前发生?即使'a'和'b的值分配会发生在不同的线 ..
发布时间:2022-01-22 20:29:02 其他开发

调用者阻塞直到 getFoo() 准备好一个值?

我有一个 Java Thread,它公开了其他线程想要访问的属性: 类 MyThread 扩展 Thread {私人 Foo foo;...富 getFoo() {返回富;}...公共无效运行(){...foo = makeTheFoo();...}} 问题是从它运行到 foo 可用需要很短的时间.调用者可以在此之前调用 getFoo() 并获得 null.我宁愿他们在初始化发生后简单地阻塞、 ..
发布时间:2022-01-22 20:27:32 Java开发

测试 Java 方法是否同步的好方法是什么?

我有几个类实现了一些接口.该接口有一个合同,一些方法应该同步,而有些方法不应该同步,我想通过所有实现的单元测试来验证该合同.这些方法应该使用 synchronized 关键字或锁定在 this - 非常类似于 synchronizedCollection() 包装器.这意味着我应该能够从外部观察它. 继续Collections.synchronizedCollection() 如果我有一个线 ..

使用条件变量在 Linux 中实现 Windows 事件?

我正在尝试在 Linux 中实现非常简单的 Windows 事件.仅适用于我的场景 - 3 个线程,1 个主线程和 2 个辅助线程.每个辅助线程通过 SetEvent 引发 1 个事件,主线程等待它.示例: int main(){无效*事件[2];事件[0] = CreateEvent();事件[1] = CreateEvent();pthread_start(线程,事件[0]);pthread ..
发布时间:2022-01-22 20:25:32 服务器开发

线程池程序在更快的服务器上运行得更慢

upd 我现在认为我的问题的根源不是“线程",因为我观察到我的程序的任何一点都变慢了.我认为不知何故,当使用 2 个处理器时,我的程序执行速度较慢,可能是因为两个处理器需要相互“通信".我需要做一些测试.我将尝试禁用其中一个处理器,看看会发生什么. ====================================== 我不确定这是否是 C# 问题,可能更多的是关于硬件,但我认为 ..
发布时间:2022-01-22 20:24:40 C#/.NET

如何解决用于在 C++ 中维护静态局部变量的服务数据的线程安全问题?

考虑以下场景.我们有一个带有静态局部变量的 C++ 函数: 空函数(){静态 int 变量 = 获得();//废话} 该函数需要从多个线程并发调用,所以我们添加一个临界区来避免对静态本地的并发访问: void functionThreadSafe(){CriticalSectionLockClass 锁(criticalSection);静态 int 变量 = 获得();//废话} 但这足 ..
发布时间:2022-01-22 20:24:27 C/C++开发

如何让线程休眠,直到收到异步函数的回调?

我有一个函数,只有在从异步函数接收到回调时才需要执行. 喜欢 我调用异步函数 Stop() 之后不久我调用异步函数 Start(). 收到停止回调之前的问题 Start() 被调用,因此我遇到了问题.我也不能分开调用两个函数就像我不能这样做.: public void SomeFunction(){停止();}公共无效 Stop_CallBack(eventargs e){开始 ..
发布时间:2022-01-22 20:24:04 C#/.NET

什么是 java 的 ManualResetEvent 等价物?

ManualResetEvent 的 java 等价物是什么? 解决方案 我所知道的最接近的是 信号量.只需将其与“许可"计数 1 一起使用,获取/释放将与您从 ManualResetEvent 中知道的几乎相同. 初始化为 1 的信号量,并且使用它使其仅具有大多数许可证可用,可以服务作为互斥锁.这是通常称为二进制信号量,因为它只有两个状态:一个许可证可用,或零可用的许可证.用于此方 ..
发布时间:2022-01-22 20:22:40 Java开发