-
1 votes1 answers1965 views
并行使用TPL中预期的双线程
我将从一个基本的解释开始,我将如何理解一些工作,然后用tldr结束这一切;如果人们只是希望达到我在这里的实际问题 . 如果我对这里的任何事情的理解是错误的,请纠正我 . TPL代表任务并行库,它是.NET 4.0的答案,试图进一步简化线程以方便开发人员使用 . 如果你不熟悉它,(在一个非常基础的层面上)你启动一个新的Task对象并传递一个委托,然后在一个从线程池中取出的后台线程上运行(通过使用线程... -
315 votes5 answers102 views
如果我的接口必须返回Task,那么实现无操作的最佳方法是什么?
在下面的代码中,由于接口,类 LazyBar 必须从它返回一个任务's method (and for arguments sake can't被更改) . 如果 LazyBar 的实现很不寻常,因为它恰好快速且同步地运行 - 从方法返回No-Operation任务的最佳方法是什么? 我已经使用了下面的 Task.Delay(0) ,但是我想知道如果这个函数被调用了很多,那么这是否有任何性能副作用... -
0 votes0 answers1865 views
Java - URLConnections停止连接?
我'm working on a homework assignment that has the purpose of showing how increasing the number of threads can help or hurt a program'的表现 . 基本思想是对来自网站的各个数据请求进行处理,然后确定在同时运行n个查询时执行所有查询所需的时间 . 我认为我已经正确完成了... -
-1 votes1 answers247 views
ThreadPoolExecutor不是并发执行的?
这仅用于我的学术目的 . 我们添加到执行程序服务的任务是否真正并行执行 . 这是我提出这个问题的例子 Runnable Class public Tasks implement Runnable{ int taskCount; public Tasks(int count){ this.taskCount = count; } public void run(){ System.out.pri... -
4 votes4 answers1357 views
固定线程池和预定线程池之间的Java差异
我有一个固定的线程池,可以随时运行7个并发线程(带队列),我想把它变成一个只运行7个并发作业的调度线程池,但可以排队/安排更多 . 阅读文档并没有真正帮助我.. newFixedThreadPool public static ExecutorService newFixedThreadPool(int nThreads)创建一个线程池,该线程池重用一组在共享无界队列中运行的固定线程 . 如果任... -
1 votes1 answers1386 views
Executors.newSingleThreadExecutor服务是否需要使用shutdown进行清理?
关于使用newSingleThreadExecutor清理执行程序服务,我有一点困惑 . 根据其实现,它在内部创建一个线程的线程池,如果失败,将创建一个新线程 . 我正在使用singleThreadExecutor,因为我想顺序运行在运行时创建的任务 . 所以我关心的是,当系统中没有更多任务时,我是否需要关闭此执行程序服务? 我已经读过ExecutorService中的活动线程阻止JVM关闭 . ... -
2 votes1 answers527 views
执行期间ExcecutorService何时失败?
根据有关Executors中newFixedThreadPool的文档,我找到了 如果任何线程由于在关闭之前执行期间的故障而终止,则在需要执行后续任务时将使用新的线程 . 当我运行我的代码时,我检测到我的固定大小的threadPool,容量为5,随着时间的推移生成线程,如 pool-1-thread-3212 ,这假设是 pool-1-thread-5 or less 所以我想知道Execut... -
0 votes1 answers660 views
如何在Qt 5.2中将QTcpSocket传递给QRunnable
我试图通过使用QRunnable和QThreadPool而不是每个连接1个线程,以可扩展的方式使用Qt 5.2编写tcp服务器 . 我遇到的问题是在QRunnable :: run中创建的套接字在创建它时设置了连接状态并设置了它的套接字描述符,但调用readAll()以响应readyRead信号会产生一个空缓冲区,即使我知道我发了一些数据 . 我尝试将套接字从主线程传递到QRunnable的两种方... -
1 votes2 answers791 views
异步方法在哪里运行?
我已经阅读了很多关于async-await模式的文章,但我仍然不确定 whether the async methods (the awaited methods) run on the UI thread or not . 我总是以SynchronizationContext类结束"async methods run in the same SynchronizationContex... -
0 votes1 answers839 views
使用Task管理线程异常
我正在我的主线程中创建一个任务来管理我的线程 . 我的目的是从AggregateException中受益,所以我希望我的任务在任务中启动的线程中发生异常时返回该异常,如下面的代码块所示 . public void ReportGeneratorFiveThreadTest() { var logger = new Log4NetLogger(typeof(ReportGeneratorTh... -
1 votes2 answers473 views
ExecutorService按顺序执行runnable
我正在使用带有newSingleThreadExecutor的 Actuator 服务来按顺序执行我的Runnable任务,但似乎不能保证串行执行顺序,因为某些时候任务是以随机顺序执行的 . executorService = Executors.newSingleThreadExecutor(); executorService.submit(MyTask1); executorService... -
0 votes2 answers277 views
执行程序服务view.post(Runnable)
我想启动几个线程,从网络中检索数据,用它执行一些操作,然后更改有关此数据的UI . 我正在使用 Actuator 服务 executorService = Executors.newFixedThreadPool(3); 所有的数据都得到了,但是当我尝试调用imageView.post时,它返回true但是没有执行关于Runnable的主体: Log.v("imageloader&qu... -
1 votes3 answers81 views
Java线程池和runnables创建runnables
请耐心等待,因为我对多线程编程并不十分精明...... 我目前正在构建一个使用ThreadPool ExecutorService进行各种runnable的系统 . 这很简单 . 但是,我正在考虑让runnables自己根据原始runnable中发生的事情产生额外的runnable的可能性(即,如果成功,执行此操作,如果失败,请执行此操作等,因为某些任务必须先完成其他任务执行) . 应该注意的是,... -
2 votes2 answers764 views
无法从线程任务<bool>转换为系统操作
我有问题在按钮中运行任务问题是:无法从threading.task.task转换为系统操作我在按钮中标记了行 private async void BtnStart_Click(object sender, EventArgs e) { if (String.IsNullOrEmpty( txtProxy.Text) || lstviewcomp.Items... -
25 votes5 answers1216 views
ThreadPool.QueueUserWorkItem,带有lambda表达式和匿名方法
将两个参数传递给线程池上的新线程有时会很复杂,但看起来使用lambda表达式和匿名方法,我可以这样做: public class TestClass { public void DoWork(string s1, string s2) { Console.WriteLine(s1); Console.WriteLine(s2); } } t... -
4 votes2 answers1826 views
ExecutorService workStealingPool和cancel方法
你能想一想这个代码不起作用的任何原因并且总是输出“完成”,但第二个例子没有任何问题 . 我正在使用最新的JDK(8u45) . public static class MyClass implements Runnable { @Override public void run() { try { Threa... -
0 votes1 answers400 views
管理ThreadPool中的线程
我想知道一旦线程处理完了什么,将线程放回或放弃线程更好吗? ThreadPool是否在内部使用Queue来存储线程并让它处理请求线程的线程? 我看了C#impl的线程,源代码,很难理解它 . 我想知道是否有更简单的实现来理解线程池的工作原理和内部细节 . -
23 votes4 answers372 views
什么是使用ThreadPool的正确方法?
如果我对ThreadPool的工作方式的理解是正确的,那么其目的之一是限制在给定时间可以创建的进程中的工作线程数 . 例如,如果将MaxThreads设置为5然后调用QueueUserWorkItem 30次,则将向ThreadPool发出30个请求,但这些请求中只有5个将由新线程提供服务,而其他25个请求将被添加到队列中并且当先前的请求完成并且现有线程变得可用时,一次服务一个 . 但是,在下面的... -
0 votes0 answers1824 views
读/写请求在Apache Cassandra中等待队列和等待时间
我是Apache Cassandra的新手,我正在研究它 . 特别是等待队列长度和读/写请求的等待时间 . Apache Cassandra基于SDEA(Stage-driven-event-archetecture) . 这意味着对于每个请求,例如读取请求,它将被放入队列中进行处理 . 基于此,应该有等待队列的一些度量和每个请求的等待时间 . 根据此链接中的帖子:https://www.pyth... -
1 votes0 answers1996 views
带有rabbitMQ使用者和WebApi调用的多线程循环 - WebApi响应永远不会返回
我有一个多线程Windows服务,它消耗Rabbit队列中的消息并根据消息内容发送电子邮件 . 当兔客户端在启动时初始化时,它会使用最小值和最大值限制Threadpool线程 . 对于从队列中取出的每条消息,服务正在使用 HttpClient GetAsync 方法向web api服务发送HTTP请求以检索电子邮件地址 . 问题是请求转到数据服务,但响应永远不会回来 . Windows服务不... -
3 votes4 answers904 views
如何限制并发线程数
在 VIDEO_URL 中,有数千个视频要下载 . 我想使用线程来完成这项工作,但一次最多限制为十个线程 . 我怎么能重写以下代码才能得到它? VIDEO_URL.each do | video | @workers << Thread.new{dl_video(video)} end @workers.each { |t| t.join } 更新 工作线程超过10后,gem ... -
0 votes2 answers706 views
Java将Java对象作为数据报包接收
我想将一个对象作为UDP数据包发送,然后在服务器上接收该对象 . 我有客户端想出来,但我不能让服务器正确读取数据报 . 客户代码: public void sendMessage() { ByteArrayOutputStream bStream = new ByteArrayOutputStream(); try { ObjectOutp... -
0 votes1 answers1506 views
用Akka控制外部期货
我一直在使用Akka,而且在更简单的项目中,只使用Scala 2.10期货 . 然而,有一天我不得不混合一个图书馆返回Futures和Akka Actors,我不知道如何整合Actor调度系统和失控的未来 . 在项目中使用Akka actor的选择是能够微调actor队列并控制代码的并行化,并且可能最终向外扩展(即使现在它不是优先级) . 但是,如果我有这样的代码(故意简化): package e... -
1 votes1 answers196 views
线程池:如何从正在运行的任务中生成子任务?
一个简单的线程池,具有全局共享任务队列(仿函数) . 每个工作者(线程)将从工作者中获取一个任务,并执行它 . 它不会执行下一个任务,直到完成 . 让我们想象一个大任务,需要生成子任务来生成一些数据,然后继续评估(例如,在保存到磁盘之前对大数组进行排序) . 任务代码的伪代码: do some stuff generate a list of child tasks threadpool.... -
0 votes3 answers1550 views
在Java中向线程池中添加新任务之前等待任务完成的最佳方法?
我想使用类似ThreadPoolExecutor的东西来管理在可用线程上运行一堆任务 . 这些任务都是相同的类型,但处理不同的帐户 . 可以定期添加这些帐户的新任务,我希望它能够检查并且不允许新任务开始,直到同一帐户的旧任务已经完成 . 最好的方法是什么? 示例 帐户“234”的任务已启动(通过ThreadPoolExecutor.execute()) 帐户“238”的任务已启动(通过Th... -
7 votes2 answers1666 views
当提交足够的任务时,修复了线程池线程阻塞
我有一个需要并行计算许多小任务的过程,然后按照任务的自然顺序处理结果 . 为此,我有以下设置: 一个简单的ExecutorService和一个阻塞队列,我将使用它来保持在将Callable提交给执行程序时返回的Future对象: ExecutorService exec = Executors.newFixedThreadPool(15); LinkedBlockingQueue<Futur... -
2 votes4 answers555 views
提升线程池
我的应用程序需要一个线程池,我希望尽可能依赖标准(C 11或boost) . 我意识到有一个非官方的(!)提升线程池类,它基本上解决了我需要的东西,但是我宁愿避免它,因为它不在boost库本身 - 为什么它仍然不在核心库之后很多年? 在本页和其他地方的一些帖子中,人们建议使用boost :: asio来实现类似行为的线程池 . 乍一看,这看起来像我想要做的,但是我发现我看到的所有实现都无法加入当前... -
0 votes0 answers1995 views
预定的Threadpool实现设计
我正在探索Scheduled Threadpool如何工作的设计决策和内部逻辑? 我正在查看Scheduled Threadpool的源代码,但很难理解查看代码的选择和逻辑 . 是否有一个很好的博客或教程解释它是如何工作的以及它是如何实现的? -
0 votes0 answers255 views
具有工作窃取的可扩展线程池
最近我一直在研究各种线程池架构 . “经典”线程池体系结构通常具有N个线程和单个共享任务队列 . 我认为只要个别任务足够大,这种架构就可以充分扩展 . 但是对于执行许多小任务的线程池,单个队列可能成为瓶颈 . 我通过我的研究发现的唯一一个解决这个问题的架构是"work-stealing" architecture . 而不是单个共享任务队列,每个线程有1个"priv... -
0 votes3 answers1404 views
限制并行运行的队列的使用者数量
我正在使用队列,有两个线程 . 一个是Enqueue,另一个是Dequeue . 分别称为 生产环境 者和消费者 . 生产环境 可以是无限的 . 但我需要限制消费者同时运行 . 我读到了“任务并行库”和“Parallel.For” . 但我不确定我应该在这里实施它们的方式 . 请建议我 . 以下是一些代码段,供您更好地理解该问题 static void Main(string[] args) {...