multithreading 相关问题

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

以下对象是否处于空闲状态?

这是完整的问题: 以下属性是否相当于说对象 x 是 免等待? 对于 x 的每个无限历史 H,每个需要无限数量的线程 H

回答 1 投票 0

POSIX 标准和信号量语义

我正在尝试理解信号量的语义。 这是一些代码: #包括 #包括 #包括 #包括 #包括 我正在尝试理解信号量的语义。 这是一些代码: #include <semaphore.h> #include <stdio.h> #include <stdlib.h> #include <pthread.h> #include <unistd.h> sem_t sem; void *helper(void *arg) { sem_wait(&sem); printf("helper woke up\n"); } int main() { sem_init(&sem, 0, 0); pthread_t tid; pthread_create(&tid, NULL, helper, NULL); sleep(1); sem_post(&sem); sem_wait(&sem); printf("main woke up\n"); exit(0); } 这里 main 创建一个辅助线程,休眠一秒钟以(几乎)确定辅助线程已运行并等待信号量,然后尝试快速连续地发布并等待信号量。根据 POSIX (https://pubs.opengroup.org/onlinepubs/009695399/functions/sem_post.html): 如果此操作产生的信号量值为零,则应允许阻塞等待信号量的线程之一从其对 sem_wait() 的调用中成功返回。 所以,我希望打印“助手醒来”。但是,如果您实际上在 Linux 上运行此代码,通常会观察到“main 唤醒”,这意味着默认情况下 Linux 上的信号量是允许不公平的。 我的问题是:为什么允许这种行为?是的,你可以说“它更容易实现”,但这并不能解释为什么信号量是用这些特定的语义设计的。 在其他地方,(https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/Semaphore.html)它表示这种行为在某些情况下更可取。在什么情况下非公平信号量更好?我将不胜感激有关此主题的任何详细资料。 这样做的一个更好的方法是它减少了上下文切换。允许调用 sem_post() 的线程继续运行,而不必恢复在 sem_wait() 中阻塞的线程。 当调度程序决定解除哪个线程的阻塞时,主线程已调用 sem_wait()。然后它选择要解除封锁的服务员。然后,它可以根据调度优先级(如引用段落的其余部分所述)或任意选择。并且它可能会选择主线程以避免上下文切换。

回答 1 投票 0

Dataprovider+TestNG - 线程“surefire-forkedjvm-command-thread”中出现异常 java.lang.OutOfMemoryError:Java 堆空间

我有一个基于 testng 和 dataprovider 的测试自动化框架。我在 jenkins job 的帮助下在服务器上运行我的代码。该作业使用 maven 命令行执行测试用例。这个工作是taki...

回答 1 投票 0

Java 的 SHA-256 等哈希算法的哪些实现是线程安全的?

我需要在 Java 应用程序中计算 SHA-256 哈希值。 Apache HmacUtils 似乎适合于此。然而,在文档中它说“这个类是不可变的和线程安全的。但是......

回答 1 投票 0

Rust 将线程池引用传递到线程池作业中

我正在尝试将作业添加到线程池,该线程池也必须能够将作业添加到该线程池。 我是 Rust 新手。 我试图使用它来将函数作为作业传递给线程池。 T...

回答 1 投票 0

是否可以在 C# 中的后台工作程序中调用将 this.Handle 作为参数的方法

我正在使用 C# 开发一个独立的 WinForm 程序,该程序使用 Solidworks EPDM api。该程序采用顶级程序集并查找程序集中的所有引用和引用文件。 e....

回答 2 投票 0

多线程服务器:每个客户端连接一个线程

我有多线程java应用程序。我想知道这种方法是否正确。从我的主要方法中,我将启动两个线程。一个线程开始侦听即将到来的客户端连接(这...

回答 3 投票 0

写入后在不同线程中读取 stl 容器

假设我们有一个全局的std::容器。我希望向其中写入一些内容,然后让许多线程从中读取内容。初次写入后我不会更改它。 有什么东西可以阻止...

回答 1 投票 0

错误“请求转换为非标量类型”

我正在尝试使用线程池并使用选择来实现多线程服务器,因此我在全局范围内声明了 fd_set 设置,并将其传递给线程池运行的函数。我收到此错误 ...

回答 1 投票 0

为近 80 个或更多客户端使用 select 或多线程?

我正在开发一个项目,其中我需要从 80 个或更多客户端读取数据,然后将他们的 O/P 连续写入文件中,然后读取这些新数据以执行另一项任务。我的问题是……

回答 3 投票 0

在并发队列中调用sync会导致死锁吗?

我知道在串行队列中调用sync会导致死锁,例如 让serialQueue = DispatchQueue(标签:“serialQueue”) 串行队列.async { 串行队列.sync { // 死了...

回答 1 投票 0

C 如何在步进电机运行时拉住线

我有 CMSIS RTOS 在 ARM 控制器上运行。一个线程用于执行步进电机运动。 步进电机沿一个方向移动 2000 步并返回到起点。 目前,

回答 1 投票 0

主线程不在主循环tkinter中,具有多个pysimplegui或tkinter对象的多线程

据我所知,这是使用 tkinter 时的一个持续问题,因为它不是多线程的。我已经阅读了很多有关此问题的文章,但我不知道如何在我的案例中解决它。 我的申请

回答 1 投票 0

为什么 select() 不尊重超时,尤其是在多线程中

我们有客户端应用程序,用于侦听 UDP 多播源并处理传入数据。它是可移植的并且可以在 Windows 和 Linux 上运行。主处理循环使用select()等待数据,

回答 1 投票 0

Java:杀死由 ExecutorService 作为 Runnable 启动的线程

我有一个系统,当它收到来自网络服务的调用时,它会启动工作程序。 Worker 由 ExecutorService 启动,启动的类实现 Runnable。但是,如果...

回答 3 投票 0

Thread.java的start()方法为什么是同步的?

据我了解,当我们创建线程时,我们使用new关键字。每当我们想要启动一个线程时,都会在一个新的线程对象上调用 start() 。 这让我问了一个问题,为什么我...

回答 1 投票 0

消费后台线程生产者生成的项目时如何保持 UI 响应?

我已将长时间运行的同步操作卸载到后台线程。这需要一段时间才能开始,但最终它开始很好地生产物品。 那么问题来了如何食用

回答 1 投票 0

如何使用 spring-data 在 cassandra DB 中批量插入

我想在 cassandra DB 表中插入 1000 万条条目。最有效的方法是什么? 我尝试使用调度程序插入并使用多线程,但认为这不是有效的......

回答 1 投票 0

读取并组合多个文件的每一行,并对该组合运行一个函数(以块的形式?)[R]

我在 R 中阅读/组合的情况有些复杂,我不确定如何解决这个问题。 文件概述: N 个文件,每个文件具有相同的 Y 列和 Z 行,但数据不同。每个...

回答 1 投票 0

如何互相传递2个变量?

我正在使用 tkinter 作为 GUI 制作一个客户端-服务器系统,我需要通过与服务器通信的线程传递 app 变量。问题是,我还需要将线程传递给...

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.