multithreading 相关问题

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

I/O 绑定进程中的多线程与多处理

我正在阅读一篇关于 python 并发的文章,并决定在我的本地计算机上尝试该代码。如果我理解正确的话,那么多线程应该更适合 I/O 绑定过程......

回答 1 投票 0

ForkJoinPool 中的工作线程是 Daemon 线程吗?

我正在阅读《Java - 完整参考》一书中有关 Fork/Join 框架的内容。它说 ForkJoinPool 使用守护线程: ForkJoinPool 使用守护线程。守护线程是自动的

回答 3 投票 0

CLR 通过 C# 实现的“互锁任何模式”不是线程安全的吗

阅读 Jeffrey Richter 在 CLR 中通过 C# 第 4 版创造的 Interlocked Anything 模式,他给出了以下示例,证明我们可以做的不仅仅是 Add for Interlocked 酒吧...

回答 1 投票 0

在 C++11 中将持有线程的锁作为参数传递 std::unique_lock()

我试图将 std::unique_lock() 传递给线程,如下面的代码片段所示,当我尝试解锁()该位置时,应用程序因“解锁无主互斥体”异常而崩溃...

回答 1 投票 0

图像在集合视图中加载速度非常慢,这也使我的滚动冻结并运行缓慢

问题:6-7 图像在集合视图中加载速度非常慢。与 CollectionView 绑定需要 6 秒,向下滚动时需要 3 秒加载图像。正因为如此,它也让我滚动......

回答 1 投票 0

如何将多个python多线程保存到一个变量

我正在对一个非常大的图像(25 088 像素 x 36 864 像素)进行一些图像处理。由于图像非常大,我通过 256x256 像素“图块”进行图像处理。我注意到...

回答 1 投票 0

并行化java递归函数

我正在学习java并编写了一个递归函数搜索,以便为一个使用暴力的玩家找到简单棋盘游戏中的最佳动作。 类游戏{ 类移动{ int x, y, 值; //

回答 1 投票 0

打开多个 Word 文档时触发进程退出事件

需要一些帮助。我创建了一个可以打开多个 Word 文档的桌面应用程序。 但在这里我面临一个问题,当第二个文档打开时,第一个文档的退出事件......

回答 3 投票 0

打开多个word文档时处理退出事件filre

需要一些发烧,我创建了一个可以打开多个Word文档的桌面应用程序。 但在这里我面临一个问题,当第二个文档打开时,第一个文档的退出事件有 f...

回答 3 投票 0

Java线程实际上并不是并行执行的?

直到现在,我的印象是同时启动的 2 个线程也是并行执行的(都同时运行它们的代码段),但我读了一些文档记录...

回答 6 投票 0

“for”循环内的 C++ 线程打印错误的值

我试图理解 C++ 中的多线程,但我陷入了这个问题:如果我在 for 循环中启动线程,它们会打印错误的值。这是代码: #包括 #包括 我试图理解 C++ 中的多线程,但我陷入了这个问题:如果我在 for 循环中启动线程,它们会打印错误的值。这是代码: #include <iostream> #include <list> #include <thread> void print_id(int id){ printf("Hello from thread %d\n", id); } int main() { int n=5; std::list<std::thread> threads={}; for(int i=0; i<n; i++ ){ threads.emplace_back(std::thread([&](){ print_id(i); })); } for(auto& t: threads){ t.join(); } return 0; } 我期望打印出值 0,1,2,3,4,但我经常得到相同的值两次。这是输出: Hello from thread 2 Hello from thread 3 Hello from thread 3 Hello from thread 4 Hello from thread 5 我错过了什么? [&]语法导致i被通过引用捕获。因此,当线程运行时,i 通常会比您预期的更进一步。更严重的是,如果 i 在线程运行之前超出范围,则代码的行为是 未定义。 按值捕获 i - 即 std::thread([i](){ print_id(i); }) 是解决方案。 两个问题: 您无法控制线程何时运行,这意味着 lambda 中变量i的值可能不是您所期望的。 变量i对于循环来说是局部的,并且仅对于循环来说是局部的。如果循环在一个或多个线程运行之前完成,这些线程将拥有对生命周期已结束的变量的无效引用。 您可以通过捕获变量 i 按值而不是按引用来非常简单地解决这两个问题。这意味着每个线程都会有该值的副本,并且该副本将为每个线程唯一制作。 另一件事: 不要等到总是有一个有序的序列:0,1,2,3,...,因为多线程执行模式有一个特殊性:不确定性。 不确定性意味着在相同条件下执行同一个程序会给出不同的结果。 这是因为操作系统根据多个参数对一次执行和另一次执行的线程进行不同的调度:CPU 负载、其他进程的优先级、可能的系统中断等。 您的示例仅包含五个线程,因此很简单。尝试增加线程数量,例如在处理函数中放置睡眠。您会发现一次执行的结果可能与另一次执行的结果不同。 使用 c++17 你可以做到: void foo(int param) { //something } main() { std::vector<std::thread> threadList; for (int i = 0; i < 100; i++) { threadList.push_back( std::thread(foo, 2) ); } for (auto& thread : threadList) { thread.join(); } }

回答 4 投票 0

跨多个线程向 Swift 数组添加项目会导致问题(因为数组不是线程安全的) - 我该如何解决这个问题?

我想将给定的块添加到数组中,然后根据请求运行数组中包含的所有块。我有类似这样的代码: 类 MyArrayBlockClass { 私有变量blocksArray:Arra...

回答 5 投票 0

Future 不返回对 C++ 中值的引用

我刚刚开始学习 C++ 多线程并遵循这个优秀的教程。 但是,当我打印 Future 返回的字符串的内存地址时,我得到了不同的地址......

回答 1 投票 0

可以使用 ReaderWriterLock 类中的 AcquireWriterLock 来代替 C# 中的常规 Lock (lock() {}) 吗?

可以使用 ReaderWriterLock 类中的 AcquireWriterLock 方法代替 C# 中的常规 Lock ( lock() {} ) 吗?看来都是独占锁。 锁(对象){ // 做一点事 } 与 读者写...

回答 1 投票 0

尝试在 JMeter 中调试线程间通信插件的 FIFO 队列时出现意外行为

我试图了解 Jmeter 线程间通信插件的 FIFO 队列是如何工作的。 我制定了一个简单的测试计划。 添加了一个设置线程组,在该线程组下我添加了一个 JSR223 采样器......

回答 2 投票 0

Python 单元测试:函数补丁不会应用于在单独线程中运行的使用者

我正在尝试测试一个消费者,该消费者消费队列的消息并在 salesforce 中创建相应的对象。 为了测试消费者,我必须在一个新线程中启动它,因为它是一个无限的

回答 1 投票 0

让java程序在没有线程的情况下休眠

我有一个java程序,可以执行一些计算,然后将结果上传到MYSQL数据库(托管在同一网络中的另一台计算机上)。我有时会遇到程序所做的问题

回答 9 投票 0

WinApi (c) 共享内存访问冲突,写入位置

我正在做一个项目,其中两个程序必须通过共享内存共享信息,使用c语言中的tchar和winapi。 然而,当我尝试写入内存时,它总是给我相同的

回答 1 投票 0

ASP.NET MVC C# 中 API 调用的多线程或并行运行

我目前正在使用 ASP.NET MVC 应用程序,该应用程序与 10 多个供应商的 API 交互以收集数据。我们当前的方法涉及使用 Task.Wait 等待所有 API 调用完成...

回答 1 投票 0

根据主循环设置的变量值立即中断辅助线程循环

我在 C++ 中遇到并发问题,我正在努力寻找最佳解决方案。我有两个线程:一个是主程序,另一个负责控制灯...

回答 1 投票 0

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