multithreading 相关问题

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

Python如何处理批量多线程?

我正在用Python构建一个简单的网络爬虫。我将不得不浏览约 50k 个网站,并且我想通过一些多线程来加速该过程。 我定义了一个爬虫类来爬行每个

回答 1 投票 0

Rust Rayon ThreadPool:“不能借用可变的,因为它是 Fn 闭包中捕获的变量”

我正在尝试通过制作一个简单的向量加法函数来学习Rust的Rayon库。我当前的代码是这样的,假设 a、b 和 c 是初始化为相同长度的向量,c 是可变的并且

回答 1 投票 0

属性错误:“_asyncio.Task”对象没有属性“is_alive”

每当套接字客户端连接到套接字服务器时,我都会收到以下错误: 客户端连接:3uRG6PtVuta3wHsbAAAD 消息异步处理程序错误 回溯(最近一次调用最后一次): 文件...

回答 1 投票 0

增加线程数量会增加执行时间。 (C)

我正在尝试用Mac M1编写一个C程序,旨在从大文件(几GB)加载数据。 我已经实施了以下内容: 每个线程接收一个指向存储结构的指针...

回答 1 投票 0

从另一个线程控制线程会导致 Rust 中出现意外行为

在我的示例中,某些事件未得到处理(消息未打印),我不明白为什么。 为了激励我的代码一点:我想要解决的问题(当前)只是一个简单的闪烁 LED

回答 1 投票 0

每个线程是否都有自己的 `rand()` prng 副本?

我正在玩一些简单的 C++ 代码来解决有关线程的考试问题,其中线程调用 rand() (是的,我知道有充分的理由使用其他生成器,但是 w...

回答 3 投票 0

如果底层指针过期,std::atomic<std::weak_ptr<>>::compare_exchange_* 是否能保证正常工作?

我有一段代码,其中 std::atomic> 如果底层弱指针过期,其行为不会像我预期的那样: std::原子 我有一段代码,如果底层弱指针过期,std::atomic<std::weak_ptr<T>>的行为不会像我预期的那样: std::atomic<std::weak_ptr<Widget>> ptrAtomicWidget = ...; std::shared_ptr<Widget> ptrWidget = ptrAtomicWidget.load().lock(); while (ptrWidget == nullptr) { ptrWidget = std::make_shared<Widget>(); std::weak_ptr<Widget> ptrExpected; // <--- nullptr std::weak_ptr<Widget> ptrDesired = ptrWidget; // Problem Version: Causes an infinite loop when ptrExpected is expired if (!ptrAtomicWidget.compare_exchange_weak(ptrExpected, ptrDesired)) { ptrWidget = ptrExpected().lock(); } // Potential Repair Version: *seems* to work (could alternately move declaration of ptrExpected above while loop) if (!ptrAtomicWidget.compare_exchange_weak(ptrExpected, ptrDesired) && ptrExpected.expired() && !ptrAtomicWidget.compare_exchange_weak(ptrExpected, ptrDesired)) { ptrWidget = ptrExpected().lock(); } } 我遇到的问题涉及循环体“潜在修复版本”的“似乎有效”部分。修复需要两个不同的过期的weak_ptr在compare_exchange期间可靠地相互比较相等。 std::weak_ptr 没有相等运算符,因此其文档对此保持沉默。我能找到的关于 std::atomic<> 专业化的文档(例如 CPPReference)都没有描述指针过期时比较交换的行为。我不知道它是否恰好适用于我的特定编译器,或者 C++ 标准是否保证它。有人知道它是否能保证按标准工作吗? 您误解了弱指针 compare_exchange 何时成功的条件。 根据atomic<weak_ptr<T>>::compare_exchange_weak的规范: 效果:如果p等价于expected,则将desired分配给p,并且具有与success的值对应的同步语义,否则将p分配给expected并且具有同步语义对应于failure的值。 当两个指针等价时很重要,这也有解释: 备注:如果两个 weak_ptr 对象存储相同的指针值并且共享所有权或均为空,则它们是等效的。 弱形式可能会虚假失败。 请参阅[原子.类型.操作]。 初始化为 ptrExpected 的 nullptr 不存储与 ptrAtomicWidget 相同的指针值,因此第一次尝试比较交换总是会失败。 第二个“解决方法循环”“有效”,因为当第一次比较交换不可避免地失败时,ptrAtomicWidget的当前值被加载到ptrExpected中,这使得ptrDesired可以在第二次尝试时替换它。 对我来说,似乎 && ptrExpected.expired() 可以被删除,因为只有在 ptrWidget == nullptr 时你才会进入循环,这意味着 ptrAtomicWidget 为空或过期。

回答 1 投票 0

如何鼓励Windows将线程分配到不同的核心?

我正在使用Windows API编写多线程应用程序,我有操作系统创建的“主”线程来执行用户界面,而“工作”线程在后台执行其工作。工作时...

回答 1 投票 0

如何并发使用ThreadPoolExecutor和无限循环

我正在开发一个应用程序,用于从彼此绑定的不同服务器获取数据。 基本上,每个服务器都有一个主要区域,例如美洲或亚洲,以及子区域,例如北美,

回答 1 投票 0

如何在没有排他锁的线程中使用Monitor?

我有一个 C#/.Net 应用程序。 我使用 Monitor.Enter 和 Monitor.Exit 获取对某些对象的独占访问权限以同步线程。 我有一个特定的情况,线程 1 应该获得独占

回答 1 投票 0

两个设备之间的UART通信是如何工作的?

在我的一个项目中,我有一台纳米计算机(嵌入式 Linux),它通过 UART 连接连接到微控制器。 两者都独立完成一些过程,但有时纳米计算机...

回答 3 投票 0

如何使用“Session”对象?

Delphi 有没有办法让我不必通过参数传递每个过程的会话对象? 我收到网络呼叫,我有接收所有呼叫数据的内部对象,并且

回答 1 投票 0

不同数据类型的Python成员变量在具有相同优先级的不同线程中未得到更新

考虑以下示例代码: 类测试: def __init__(self) -> 无: self.bool = False self.字符串=“” 线程 = 线程(目标 = self.target) 线程.s...

回答 1 投票 0

使用套接字选择阻塞

下面的代码是一个聊天室。首先我运行服务器,然后运行客户端。客户端通过套接字到达服务器。然后服务器接受连接,客户端必须输入他的昵称...

回答 1 投票 0

使用 c 中的套接字选择阻塞

下面的代码是一个聊天室。首先我运行服务器,然后运行客户端。客户端通过套接字到达服务器。然后服务器接受连接,客户端必须输入他的昵称...

回答 1 投票 0

为什么我们使用线程并一起选择[重复]

我正在使用c中的套接字编程与一些客户端设置服务器。 我发现为了拥有多个客户端,我应该使用线程或选择或轮询。 我知道我应该如何使用这些

回答 1 投票 0

从流程中获取定期更新

我有一个函数可以随着时间增加数字。这是给一个进程;但在进程运行时它不会增加。我希望全局变量的值按常规递增

回答 1 投票 0

为什么我们对阻塞线程如此警惕?

自从我开始编程以来,我总是一致认为线程阻塞是不好的——有些操作本质上是异步的,我们应该创建尊重的代码

回答 1 投票 0

对相同的请求负载进行顺序处理,对不同的负载进行并行处理

我有一个用 springboot 应用程序编写的 Kafka 消费者,它使用来自 Kafka 主题(称为 matchupdates)的有效负载,处理它并将其保存到数据库。因为我收到了大量更新...

回答 1 投票 0

DLL可以在进程启动时被工作线程静态加载吗?

我们有一个包含许多(数百个)DLL 的应用程序。 EXE 直接依赖于其中的一部分(通过其导入表),而后者又依赖于另一部分(通过其导入表),依此类推。欧...

回答 1 投票 0

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