问题标签 [thread-synchronization]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
6451 浏览

java - 实例变量上的同步

在下面的示例中,在实例变量employee 上获得了锁(不是在this 上),但TestClass1 的线程在进入同步块时仍然被锁定。任何建议为什么是这种行为。据我了解,如果它的同步在此,它应该被锁定。

0 投票
2 回答
280 浏览

c++ - 我们可以在 Sockets Map 上使用读写锁吗?

假设我们有 std::map 套接字映射,它是一个多线程应用程序。将有多个线程访问映射中的套接字以发送套接字数据,同时只有一个线程访问映射中的套接字以接收数据,并且如果远程端关闭,该线程还将删除SocketInfo*。

在上述情况下,我们可以使用读写锁(pthread_rwlock_t)来同步线程吗?如果是,我们是否比 pthread_mutex_t 有更多的好处?

史蒂夫

[伪代码]

0 投票
1 回答
761 浏览

java - 如何使用同步来订购我的 LinkedBlockingQueue?

我的问题涉及使用同步来订购我用于电梯程序的 LinkedBlockingQueue。

在该程序中,电梯应该尽可能高效地运行:从一楼到十楼的电梯将响应上行途中的其他停靠点,即使这些停靠点是在最初的 10 楼呼叫之后进行的。

例如:电梯在一楼,在大楼的10楼接到电话。在上十楼的途中,七楼上楼的人打了个电话。电梯在7楼停靠,10楼继续原站。

我的问题是,我如何同步我的线程以有效地响应用户的呼叫?我不确定我在哪里或如何插入同步。

下面是我的代码:它有一个工作电梯和线程,但电梯不会有效地响应呼叫,而是发送每个不同的呼叫。为了表示旅行时间,我让电梯“休眠”了 3 秒。

}

任何帮助都感激不尽。

0 投票
1 回答
1437 浏览

java - Java中用于同步的全局变量

我正在用 JAVA 编写多个睡眠理发师问题的变体,其中每个客户都有等待理发师的容忍时间和理发的特定时间,此外,除了在没有客户的情况下睡觉之外,每个理发师在给一定数量的顾客剪头发特定时间后睡觉。

由于变化,我觉得需要一个跟踪时间的全局变量。

我的问题是,如果我使用带有静态字段的 Global 类来跟踪时间,我会遇到任何问题吗?我已经读过,如果我的全局类变得“卸载”,则该值将变为空;这种情况什么时候发生,对我来说会是个问题吗?如果是,我还有什么其他选择?

(我会在扩展 Thread 的主类中的“while”循环中增加时间,而扩展线程的 Customer 和 Barber 类只需要阅读它)。

0 投票
2 回答
1421 浏览

multithreading - 为什么每次与互斥锁同步时都会发生线程上下文切换?

我有多个线程在紧密循环中更新单个数组。(双核处理器上的 10 个线程 @ 每秒大约 100000 次更新)。每次在互斥锁(WaitForSingleObject / ReleaseMutex)的保护下更新数组。我注意到没有线程对数组进行两次连续更新,这意味着必须有某种与同步相关的产量。这意味着每秒发生大约 100000 次上下文切换,这似乎是次优的。为什么会这样?

0 投票
3 回答
1765 浏览

java - android.os.NetworkOnMainThreadException 错误即使在 AsyncTask 中运行

当我尝试连接到互联网时,我收到了 android.os.NetworkOnMainThreadException 错误。我知道更高版本的 android(HoneyComb 以后)不允许您在 UI 线程上执行网络 IO,这就是我使用 AsyncTask 的原因. 代码没有错误,但是当它运行时,我得到 android.os.NetworkOnMainThreadException 错误代码:

我已经读到一个可能的解决方案是使用 StrictMode 策略,但我有点不愿意使用它,因为它仅在开发环境中被推荐。这里有什么问题?

0 投票
1 回答
1165 浏览

java - 从java中的对象释放锁

大家好,这是我的代码,我面临的问题是,尽管调用notifyAll,它没有释放锁,请你说明原因并告诉解决方案。我是线程新手。提前致谢。

0 投票
2 回答
1298 浏览

java - 同时启动两个进程

我需要同时运行两个进程。我写了代码:

第一次开始:

第二:

换个地方后结果一样。在这种情况下,我得到了第一张照片,然后闪光开始了。 Thread.sleep(...);没有帮助

如何同时启动闪光灯,并立即拍照?谢谢


像这样写:

称为:

我做错了什么。根本不起作用,没有崩溃,但在日志中写道:07-05 16:38:58.217: W/System.err(30934): java.io.IOException: Error running exec()。命令:[FlashPreview.onFlashResumeStart()] 工作目录:null 环境:[ANDROID_SOCKET_zygote=9, SECONDARY_STORAGE=/storage/extSdCard:/storage/UsbDriveA:/storage/UsbDriveB:/storage/UsbDriveC:/storage/UsbDriveD:/storage/ UsbDriveE:/storage/UsbDriveF, ANDROID_BOOTLOGO=1, EXTERNAL_STORAGE=/storage/sdcard0, ANDROID_ASSETS=/system/app, PATH=/sbin:/vendor/bin:/system/sbin:/system/bin:/system/xbin, ASEC_MOUNTPOINT=/mnt/asec, LOOP_MOUNTPOINT=/mnt/obb, BOOTCLASSPATH=/system/framework/core.jar:/system/framework/core-junit.jar:/system/framework/bouncycastle.jar:/system/framework/ ext.jar:/system/framework/framework.jar:/system/framework/framework2.jar:/system/framework/framework_ext。

0 投票
0 回答
71 浏览

java - 创建一个像 Windows 资源管理器这样的目录并将信息存储在一个文本文件中

伙计们,我遇到了一个问题,我必须创建一个目录来保存一个文本文件,该文件保存有关所有文件的信息。就像文件一样created, last modified , type etc..,它没什么大不了的,直到我必须维护静态文件的这个记录(已经存在于目录中)。但是当添加一些新文件时会发生什么,我如何检查最后修改的内容。对于静态文件,最初我将类变量设置为零,然后将该变量与最后修改的值进行比较。我的问题是添加新文件时会发生什么?每次添加新文件时都会创建一个新对象?我尝试过这种方式,但结果非常乏味?我在朝着正确的方向前进吗?它必须在java. 在真正的修复中。请帮助伙计们。我希望我的怀疑很清楚。提前致谢!

0 投票
2 回答
436 浏览

c# - C#线程之间的并发

场景如下:

我有一个类:“主类”,以及它的 2 个(或更多)实例。

该类有一个对象(私有、静态),每个实例都共享该对象,并在需要时使用“lock(){...}”进行保护。我对此没有任何问题。

该类也有 2 种方法,它们让我疯狂地试图让一切正常工作。

假设有一个“主要方法/函数”,A,它是从外部调用的(我无法控制这个调用,也不知道什么时候会发生,但几乎所有时间都在一个之间有很短的空间调用和下一个)在两个线程上。

还有第二种方法,B,更短(在执行时间和代码中)。

这是问题所在:

t2 调用方法 A

t1 调用方法 A

t2(来自方法 A)调用 t1 的方法 B

t1 和 t2 被阻塞。

一个线程(t2)的方法 B 是从另一个线程(t1)的方法 A 调用的,如果在 t2 正在执行方法 A 时调用了它,那么一切都会以某种方式崩溃。通常两个线程都被阻塞。

我正在使用一个标志变量,所以当 t2 开始执行方法 A 时,t1 使用这个标志来知道在 t2 完成方法 A 执行之前他不能调用 t2 的方法 B,但似乎我错过了一些东西因为它不起作用。

我习惯于使用 Java,但我想 C# 代码中存在完全相同的逻辑,我认为 C# 中一定有一些我缺少的函数或“技巧”。

我想(并希望)必须有一种简单的方法来解决这个问题,因为它不是市长的问题,所以我终于来了,3 天后寻求帮助,但我自己没有任何重大进展。

提前致谢。