我们都在为单处理器编写代码。
我想知道我们什么时候都能在多处理器上编写代码
这种转换需要什么(软件工具、逻辑、算法)
编辑:在我看来,当我们并行完成许多任务时,我们需要以同样的方式将那些现实生活中的解决方案(算法)转换为计算机语言。就像OOPs编码对过程编码所做的那样。OOPs是一种更真实的编码方式,而不是过程式的。所以我希望有这样的解决办法 没有简单的答案,在许多方面,即使是复杂的答案目前也不充分或不完整。如果你对你想要的回复更具体一些,你会得到更好的答案:指向开发库和工具的指针,教学材料,指
我需要通过一个保持数据库连接的单例对象从多个线程访问数据库。我从SQLite3的网站上读到,SQLite3结构只能在调用SQLite3_open()创建它的同一线程中使用。您无法在一个线程中打开数据库,然后将句柄传递给另一个线程以供其使用'。我想知道在我的情况下,有没有线程不安全的威胁 如果SQLite库是使用-DSQLITE_THREADSAFE编译的,那么您可以使用最新的SQLite 3版本
SQLite的作者:
从版本3.5.0开始,SQLite使用其
拥有内部互斥锁,因此应用程序可以自由
为什么必须始终从UI线程创建/更新UI元素
在(几乎?)所有编程语言中,只能从UI线程安全地访问/修改UI元素。我知道这是一个标准的并发访问和同步问题,但它真的有必要吗?这种行为是由编程语言还是操作系统强加的?有任何编程语言在这种情况下是不同的吗?它是由图形框架强加的,图形框架通常(但不总是)由操作系统提供
基本上,使所有内容“适当线程安全”是低效的。虽然必须封送回UI线程的调用确实是一件痛苦的事情,但它允许UI线程本身极为快速地处理事件,而不必担心锁定等问题。要使整个UI线程安全,成本(速度)
我需要更改多线程应用程序中的默认设置。此设置是每个线程还是每个进程?它在Mac OS X和Windows下有不同的作用域吗?它是Windows上的每个线程。对OS-X不太确定,当然是这样
如果您使用的库希望将控制字设置为默认值,请注意可能遇到的麻烦。几乎所有的人都是这样。你有这方面的参考资料吗?
为什么在web应用程序中线程安全很重要?Pylons(PythonWeb框架)使用一个全局应用程序变量,该变量不是线程安全的。这有关系吗?如果我打算使用多线程,这只是一个问题吗?或者,这是否意味着如果另一个用户。。。我只是把自己弄糊涂了。这有什么重要呢?线程错误会导致严重而微妙的问题
假设你的系统有10个成员。又有一个用户注册到您的系统,应用程序将其添加到名册中,并增加成员数;“同时”,另一个用户退出,应用程序将他从名册中删除,并减少成员数
如果您没有正确处理线程,那么您的成员数(应该是10)很
我正在编写一个代码,它使用线程级并行性进行nxn矩阵乘法。
要得到C=A X B,
首先我转换矩阵B,将矩阵分成块。
线程从A和B中获取一个块并将它们相乘,
然后将结果添加到C中的相应块中。
使用malloc()在堆内存中分配所有矩阵。
但问题是,对于相同的输入,
答案有时不正确,有时正确。
我不太清楚为什么会发生这种情况,但我想代码在线程安全方面需要改进。
我发布了部分代码。
blocks是行和列中的块数,即N/块大小。
所以线程的总数是^3块
while (thread_loaded &l
我有一个运行很长的查询,它需要太长时间才能保持客户端的连接。我想调用我的DomainService,创建一个新的工作线程,然后从服务返回,这样我的客户端就可以开始轮询,看看长时间运行的查询是否完成
我遇到的问题是,由于我的调用线程正在立即退出,因此当我的工作线程尝试访问任何实体时,我会抛出异常,因为ObjectContext在原始线程结束时被释放
以下是我如何从Silverlight客户端创建新上下文和调用:
MyDomainContext context = new MyDomainConte
我使用Delphi 2010,当我尝试在应用程序的单独线程内执行XmlHttpRequest操作时,我得到一个EOleSysError异常,并显示以下消息:
'尚未调用CoInitialize,ClassID:{F6D90F16-9C73-11D3-B32E-00C04F990BB4}'
有人有办法解决这个问题吗?
(对不起,我的英语不好)
谢谢 在线程的Execute方法的开头调用CoInitialize。别忘了在执行结束时调用coninitialize
Chris Bensen写了一些。Co
我一直在学习游戏开发的lua。我听说过其他语言的协同程序,但实际上是在lua中发现的。我真的不明白它们有多有用,我听过很多关于它是如何实现多线程功能的讨论,但它们不是按顺序运行的吗?那么,正常运行的函数有什么好处呢?我只是不知道它们与函数有多大的不同,只是它们可以暂停,让另一个函数运行一秒钟。看起来用例场景对我来说并没有那么大
有人想解释一下为什么有人会从中受益
特别是从游戏编程的角度来看,这会很好^ ^我们在我正在从事的一个项目中使用它们。对我们来说,主要的好处是,有时使用异步代码时,由于某些
我有至少3个TCP客户端,每个客户端有一个线程。我正在发送消息并等待答案,但有时我必须等待从所有客户端接收响应,这取决于服务器发送的消息类型。我已经向客户发送消息并进行接收,但是当我必须等待其他客户的响应时,我直到现在才能够这样做。鉴于您没有提到您的环境/语言,我假设C#/.NET 4
您需要为每个客户机提供一种机制来发出响应到达的信号。这通常通过AutoResetEvents完成:每个客户机将其响应发送回服务器。服务器本身可以从客户端发送的响应(或任何其他属性,例如连接)中提取。然后他设置相应
我正在研究perl多线程的一个简单用例:一个线程写入文件,另一个线程跟踪文件。代码如下:
use strict;
use warnings;
use threads;
use File::Tail;
my $file = 'data.txt';
sub tail_file{
my $file=File::Tail->new($file);
while (defined(my $line=$file->read)) {
print "$line";
}
}
我们通过在单独的vm中运行单线程应用程序来扩展它——每个实例都配置为在整个工作负载的特定分区上工作。一种想法一直在流传,即我们可以通过向应用程序的某些部分添加线程来获得更好的性能,尽管我们不会消除当前对vm的依赖
为虚拟机环境设计的应用程序的架构线程是否与为非虚拟机环境设计的应用程序的架构线程不同?我主要担心的是,对于应用程序中设计的每个线程,每台机器上可能旋转的实际线程数是机器上运行的vm实例数的函数,实际上可能导致性能下降
提前谢谢
编辑:上面提到的虚拟机是指VMWare提供的虚拟机 我认为
我知道其他地方也会问相关问题,但我的不同:)
我正在使用BasicHttpClient和HttpPoster向第三方服务发送内容。我在一个场景中使用它,其中JMS侦听器使用单个bean发布内容。我不认为这是个问题,因为BasicHttpclient使用SingleClientConnectionManager,javadoc说
This connection manager maintains only one active connection at a time. Even though t
有一个代码可以读取一个文件,并使用类Task和StreamReader在另一个线程中对其内容进行一些计算操作
Task t= new Task(() => DoSomeWork(myFile));
t.Start();
但尽管文件是不可变的,有时我得到的结果却不同!为什么?我应该怎么做才能解决它?很明显,DoSomeWork()中有一些线程不安全的东西。最有可能出现这种情况的是一些静态代码,因为这意味着内存中只有该特定代码段的一个副本。DoSomeWork()的一个实例可能会切换出上
我无法将我的GEF编辑器与基于EMF的模型同步。我认为这是因为在调用编辑器适配器的notifyChanged()并更新模型子级之前,模型内部EMF适配器,或者更确切地说,它调用的方法没有完成。这会导致编辑器视图与模型本身不同步,或者更确切地说,对模型的更改不会在视图中显示,而应该在视图中显示
考虑一下这种设置。命令“CreateNodeCommand”将节点添加到基础模型中:
@覆盖
public void execute(){
...
getNewNode().setGraph(getGrap
我正在寻找我的程序中可能出现的死锁,我怀疑以下情况。
如果两个线程同时调用EnterCriticalSection,线程#1在输入后立即调用DeleteCriticalSection,那么仍在EnterCriticalSection调用中的线程#2会发生什么情况
谢谢
如果两个线程同时调用EnterCriticalSection,会发生什么情况
线程#1在输入后立即调用DeleteCriticalSection,什么
线程#2是否仍在EnterCriticalSection调用中
两个线程不能同
当我尝试使用这个线程时,我不断得到“线程错误:句柄无效(6)”,但我看不出问题所在。如果可以,请帮忙,谢谢
stackoverlow抱怨我解释得不够。因此,我创建了一个线程类,它编译时没有任何错误,但当我用execute调用它时,它似乎运行正常,但在析构函数中抛出这个错误
tdownloadthread = class(tthread)
private
furl,
ffilename,
fmsg: string;
fdl: tidhtt
ThreadStart是否不能处理本机函数指针?如果没有,是否有其他方法从C++/CLI运行regluar C函数指针?尝试将第8行替换为
ThreadStart^ param = (ThreadStart^) System::Runtime::InteropServices::Marshal::GetDelegateForFunctionPointer((IntPtr)func, ThreadStart::typeid);
ThreadStart^ param = (ThreadStart^
我想在它自己的线程中调用callbackmethod。callbackMethod将作为接口实现
我声明了如下线程:
CustomfunctionCallbackThread = Class(TThread)
protected
procedure Execute; override;
private
var mCallId: String;
var mCallbackMethod: ICu
但是,这会给我带来错误,例如:
错误C2726:“gcnew”只能用于创建具有
托管类型
错误C2440:“正在初始化”:无法
从“ThreadX*”转换为“ThreadX”没有构造函数可以接受
源类型或构造函数重载解析不明确
错误C3364:“System::Threading::ThreadStart”:委托构造函数的参数无效;委托目标必须是
指向成员函数的指针
你将C++和C++ +CLI混合,这是另一回事。
public class ThreadX
与
这就是列表中的代码——清楚地复制
我有id像opengl纹理识别器的变量。我使用glGenTextures(1,&id)生成它,它运行良好。问题是当我在另一个线程中调用glGenTextures函数时。它总是返回0,不生成纹理。我认为这是因为opengl环境不同
我使用SDL加载图像,然后使用glTexImage2D将其传递到纹理。我试图在线程中创建一个新的SDL\GLContext,与主线程共享它,但我不知道如何创建它。例如,我可以使用id=2在线程内部修改id,并读取和打印它,但我不能使用glGenTextures进行修改,
如何在VBA中编写代码以获得多线程解析
我看过了,但它不起作用
我有10000个站点,每个站点在A列的一行中。我需要至少10个并发线程来解析标记之间的信息,在每个站点上使用index.php中的rel=“external”,然后将结果保存到B列的每一行。正如@Siddharth Rout在他的评论中指出的那样,答案是否定的。但要对此稍作扩展,即使是在后台运行并启用类似多线程功能的方法也不允许使用多线程
这方面的一个很好的例子是。它允许在将来的某个时间点运行一个过程
此方法允许用户继续编辑工作簿,
我正在构建一个系统,我将使用两台服务器和一个负载平衡器,
这家公司有60000多个用户,他们预计有10000个并发用户,所有事务都将在5秒内发生
我不确定每台服务器的情况如何:
HttpServer中的连接数
应用程序服务器中的线程数
我知道当系统投入生产时,我会找出这些数字,但我需要从一些事情开始
有什么建议吗?这是关于容量规划的,我可以给出以下建议,但所有建议都取决于系统的技术可行性和业务需求
试着找出你需要支持的最大容量。所以你可以做必要的压力测试来解决这个问题
确保系统能够通过集群等方
我正在使用显示内容,同时使用forkOS$system“mpg123 foo.mp3”>>return()在后台播放一些音频。当我关闭gloss窗口时,程序退出,但音频仍在播放。所有资源都显示这个线程应该会死,发生了什么?即使我使用killThread明确地杀死它,它也不会死。通常system函数是不可中断的。如果要终止线程以终止生成的进程,可以尝试捕获异步ThreadKilled异常,调用terminateProcess,然后重新抛出ThreadKilled。如果关闭gloss窗口,主进程将死
我有两门课来计算欧拉数
计算欧拉数的公式是1/n!的和!。n=0到无穷大
此类计算阶乘
public class E
{
public static double factorial(double number)
{
double m = number;
if (number == 0 || number == 1)
{
return 1;
}
e
我在浏览互斥部分的同时,正在浏览并发部分,对此我感到困惑:
为了避免繁忙的等待,互斥体实现采用park()/unpark()机制(在Sun OS上),将等待的线程及其线程ID放入队列中。稍后在pthread\u mutex\u unlock()期间,它将从队列中删除一个线程,以便调度程序可以拾取它。类似地,Futex(Linux上的互斥实现)的实现也使用相同的机制
我还不清楚队列在哪里。它是在正在运行的进程的地址空间中还是在内核的某个地方
我的另一个疑问是关于条件变量。pthread\u con
这个问题我一直都有,但从来没有真正提出过
我现在拥有的是一个显示数据的工作表,用户可以随时刷新。因此:
用户触发VBA函数
VBA函数在用户等待时收集数据并进行分析
VBA函数将结果转储到电子表格中
用户继续查看数据
由于数据分析都是在VBA内部完成的(不使用工作簿,仅使用记录集、数组、库等),因此我希望能够以某种方式允许用户继续查看原始数据,同时VBA负责获取和分析新数据
我知道您不能同时使用工作簿和运行VBA,但您可以有两个excel实例,在一个工作簿上工作,而另一个运行VBA
那么,我可以
以下是我的情况的简化版本:
void AppendToVector(std::vector<int>* my_vector) {
for (int i = 0; i < 100; i++) {
my_vector->push_back(i);
}
}
void CreateVectors(const int num_threads) {
std::vector<std::vector<int>* > my_vector_of_
大多数CPU架构将重新排序存储加载操作,但我的问题是为什么?我对存储负载屏障的解释如下:
x = 50;
store_load_barrier;
y = z;
此外,与释放和获取语义相比,我看不出这个屏障在无锁编程中有多大用处。简短回答:存储加载屏障防止处理器推测性地执行存储加载屏障之后的加载,直到之前的所有存储都完成
详细信息:
存储加载屏障代价高昂的原因是它阻止了跨屏障加载和存储操作的重新排序
假设您有一个如下所示的指令序列:
... ;; long latency
这个程序不会自动退出,只是挂起。
只有按“回车”键后,它才会退出
如何使其在发出“kill”信号后自动退出
另外,我不想使用detach() 混合信号和线程有点困难,因为$thread->kill实际上并不使用真正的信号(因为信号被发送到进程,而不是线程)。这也很好,因为如果它这样做,SIGKILL会破坏东西
即使在谈论“正常”信号时,您也会有一些意想不到的行为,因为perl对它们的处理请参见:。这不是不可能使用的,但您需要注意其中的注意事项
但是问题的根源是——信号被安全地处理,这意味着per
在我的测试环境中有两个Linux节点(hostA和hosb),我需要触发一个脚本(worker.sh)在所有节点上并发运行,worker.sh已经放置在所有节点中,因此我在Perl脚本(master.pl)中使用了线程模块,下面是代码片段:
use threads(stringify);
sub runByThreads{
my($count,$funcion,$host_ref,$cmd) = @_;
@hostlist = @{$host_ref};
my $threa
如果初始队列需要时间,如何避免队列(Beanstalk)阻塞其他用户
例如,如果我的第一个用户上载的文件需要10小时才能处理,我如何避免其他用户必须等待10小时才能启动文件
有关详细信息:一个用户上载一个包含n行的文件。此文件将拆分为1000行的小队列,并添加到队列中。4名工人同时处理队列(即同时处理4000行)
如果第一个用户上载了一个包含100.000行的文件,而第二个用户上载了一个包含4.000行的文件,那么他将不得不等待工作人员处理完第一个文件
有没有办法避免强迫第二个用户等待
我想到的
我有一个简单的JavaFx浏览器,它是通过一个JButton启动的,它被放置在一个JFrame中。现在,我想将JavaFXBroser放入一个单独的线程中,即使JFrame关闭,该线程也应该运行。现在,如果我用这个JButton关闭JFrame,JavaFx浏览器也会关闭。我尝试过多种组合,在互联网上做过研究,但没有成功。希望你们能帮我举个小例子。谢谢
browser.addActionListener(新ActionListener(){
已执行的公共无效操作(操作事件e){
如果(例如ge
我当时正在使用pthread_cond和互斥体编写一个多线程代码,这让我想知道:
信号是一次性的,所以如果信号在另一个线程等待之前发送,那么另一个线程将无限期地等待
既然cond_wait()解锁了互斥锁,那么在互斥锁解锁()之前写这条语句是一条经验法则吗?(我意识到这会使后一条语句变得多余,但我这样做只是为了清楚起见)还是有很多情况下您希望在互斥锁之外写函数
让这成为你的咒语:
只有等待某件事
等待几乎总是这样:
if (pthread_mutex_lock(...) != 0) {
我正在使用sidekiq,我刚刚阅读了以下文档:
ActiveRecord
Use delay, delay_for(interval), or delay_until(time) to asynchronously execute arbitrary methods on your ActiveRecord classes.
User.delay.delete_old_users('some', 'params')
User.delay_for(2.weeks).whatever
User
我们如何使线程同时启动线程:Next。我尝试在SM_检查中使用同步计时器作为子线程,但线程示例:Next未同时处理。线程组上的同步计时器一次生成所有样本,但我需要让线程处于同一时间from:Next only。非常感谢您在这方面的任何帮助。
螺纹组
CSV Data set config
User Defined Variables
Loop Controller
: HTTP Cookie Manager
: Login
:SM
:SM_Check
:- HTTP He
我正在用Akka使用Runnable界面安排一个长时间运行的任务,如下所示:
val myTask = system.scheduler.schedule(initialDelay, interval, new MyRunnable())
播放关闭时线程会发生什么情况?我可以看到runnable中的代码停止执行,但我不清楚线程在什么时候被中断,以及如何在runnable中钩住这个事件。我曾尝试在runnable中捕获InterruptedException(或任何其他),但从未抛出异常。优雅地
我使用restxq模块使用eXist db实现了一个基于Web的数据库应用程序。在此应用程序中,项目得到管理。
现在我想让项目的创建和编辑过程线程安全。在eXist文献和web中没有发现任何东西,因此我想在这里问您eXist/XQuery中是否有解决方案
致以最良好的祝愿,
费利克斯嗨,费利克斯,对于这类问题,我建议你把它摆在开放的位置。(如果您尚未订阅,请参阅订阅信息。)嗨,joewiz,我也通过向sourceforge的eXist列表发送电子邮件来问这个问题,但无论是在本例中还是在其他早期案
我希望从clojure和
通过标准流与该流程进行通信
使用图书馆,我可以
生成并读取进程,并从out流中读取数据:
(def my-process (sh/proc "my_dumb_process"))
; read 10 lines from my-process's stdout. Will block until 10 lines taken
(take 10 (line-seq (clojure.java.io/reader (:out p))))
我希望在进程打印时调用异步
在我看来,这似乎是Nprogressindicator或Xcode 9中的一个bug:
在macOS 10.12.6中运行Xcode 9 Beta 1或Beta 4
文件>新项目、macOS、Cocoa应用程序、Objective-C或Swift、ARC或not、无故事板、最新(10.13)SDK
在应用程序目标的环境中,设置CA\u ASSERT\u MAIN\u THREAD\u TRANSACTIONS=1
在应用程序代理中,添加IBOutletprogressIndicator
在ni
我有点困惑。多线程涉及并行处理,那么为什么我们不能使用多个内核来运行不同的线程呢?
我在这个链接中找到了这个声明-
请解释“多线程应用程序无法利用多处理”这句话
提前感谢。这句话中的多处理是关于多个进程,而不是处理器
属于同一进程的线程不是孤立的。例如,当一个线程崩溃时,整个程序都会崩溃
UPD:对不起,我重新阅读了这篇文章,意识到我最初的回答不正确。作者似乎认为从相同的执行单元执行的软件“仿真”线程没有任何并行化。在实践中几乎找不到这样的线程库实现。大多数线程库都有内核线程支持。那么,我可以
我想使用racketlisp引擎,它允许执行一个可以被计时器超时中断的过程。我不确定如何构造引擎可以接受的过程,因为我无法在线找到示例。它列出了具有以下合同的输入过程:
(engine proc) → engine?
proc : ((any/c . -> . void?) . -> . any/c)
我只是在学习类型化的球拍注释语义,这是我目前无法理解的。有人能提供一些在球拍引擎中使用的有效程序的具体例子吗?我已经对它做了一些讨论。以下是我所做的:
#lang racket
我使用lambda的捕获将参数传递给boost::asio::io_context::post回调。
它是线程安全的吗
代码
#include <iostream>
#include "boost/asio.hpp"
#include <thread>
int main() {
boost::asio::io_service io_service;
boost::asio::io_service::work work(io_service);
我的线卡住了,需要帮助找出根本原因。
下面是一个线程转储:
"AD Thread Pool-Global15" waiting for lock java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject@2537cac0 TIMED_WAITING
sun.misc.Unsafe.park(Native Method)
java.util
系统配置:
Workstation with two Xeon E5-2620 V4 CPUs. Cent OS 7.3.
Openmpi-3.0.1, ifort 2015, gcc 4.8.6, intel MKL.
我在工作站上运行MPI/OpenMP混合程序。我想使用1个MPI进程和8个OpenMP线程。但是,并行区域中使用的OpenMP线程始终为1。在另一台配备Intel 9900K CPU的机器中,OpenMP线程数始终为2。对于这两台机器,我通过调用OMP\u get\u ma
我有一个简单的C++11线程程序,如下所示
代码:
正如您在上面所看到的,有一个循环,它有一个sleep_,使线程睡眠5秒,然后如果exit_thread设置为false,它将再次唤醒并循环。主线程等待12秒,首先准备退出,方法是将exit_thread设置为true,然后在线程上进行连接。直到现在一切都很好
问题:
以上是好的,并为目标工作。但有一个潜在的问题。如果线程现在刚刚开始休眠,那么在它退出休眠之前,它需要再花4秒钟才能发现它现在需要退出。这延迟了退出过程和销毁
问题:
如何使线程以可
我必须用多个线程调试程序。我使用gdb,我想使用检查点。中唯一的限制是检查点仅在gnu/linux系统上可用,但与线程无关
但是,当我尝试设置检查点时,出现了一个错误:
(gdb) checkpoint
checkpoint: can't checkpoint multiple threads.
我是否做错了什么,或者确实无法检查多线程程序(手册中没有列出此限制)
注意:我很清楚,在并发系统中,检查点/回滚的概念非常困难,由于这些程序的因果关系,问题更多的是我是否遗漏了什么。请参阅gdb错误
我有一个具有异步端点的quarkus应用程序,该应用程序创建一个具有默认属性的实体,在请求方法内启动一个新线程,执行一个长时间运行的作业,然后将该实体作为响应返回给客户端跟踪
@POST
@交易的
公共响应startJob(@NonNull JsonObject请求){
//创建我的实体
JobsRecord job=新JobsRecord();
//设置默认属性
job.setName(request.getString(“name”);
//坚持
jobsRepository.persist
我对生锈还很陌生,所以我遇到了一些不习惯的事情。一个让我感到悲伤的问题与线程有关
我想生成一个执行结构的方法的线程,但我不能,因为该方法需要有一个”静态生存期。我更希望该方法(通过扩展结构)没有静态的生存期
如果我确定线程将在删除结构的实例化值之前退出,有没有办法与Rust进行通信?换句话说,我可以告诉Rust我可以保证值在线程退出之前不会被删除吗?或者,有没有一种方法可以将生命周期传递给线程
如果这一切都不可能,那么可以做些什么呢?我已经研究过使代码异步化,但是没有成功地解决上述问题
如果方法
代码中实现多租户逻辑的方式
TenantDataSource.java
2-请求
请求更改租户的方式
正常-工作良好
@Component
public class TenantDataSource implements Serializable {
private static final long serialVersionUID = 1L;
@PostConstruct
public static Map<Object, Object> get
1 2 3 4 5 6 ...
下一页 最后一页 共 178 页