-
356 votes7 answers539 views
僵尸存在......在.NET中?
我和队友讨论过锁定.NET . 他是一个非常聪明的人,在低级和高级编程方面拥有广泛的背景,但他在低级编程方面的经验远远超过我的 . 无论如何,他认为,如果可能的话,应该避免在预期会处于高负载的关键系统上进行.NET锁定,以避免“僵尸线程”崩溃系统的可能性很小 . 我经常使用锁定,我不知道什么是“僵尸线程”,所以我问道 . 我从他的解释中得到的印象是僵尸线程是一个已经终止但仍然保留在某些资源上的线程... -
0 votes0 answers855 views
弹出引导与ThreadLocal内存泄漏
我创建了spring boot应用程序,当调用rest endpoints 时触发testng测试 . 对于报告我正在使用ExtentReport,文档在这里:http://extentreports.com/docs/versions/3/java/ 以下是文档中的完整代码: public class ExtentTestNGITestListener implements ITestListe... -
0 votes1 answers621 views
Scala:Merge Sort使用Futures超时
以下顺序合并排序可以非常快速地返回结果: - def mergeSort(xs: List[Int]): List[Int] = { def merge(xs: List[Int], ys: List[Int]): List[Int] = (xs, ys) match { case (Nil, _) => ys case (_, Nil) => xs ... -
3 votes1 answers1573 views
最后一个方法行上的Task.ConfigureAwait(false)是否会影响任何内容?
我知道在正在等待的任务上调用ConfigureAwait(false)有时会产生性能优势,因为它可以防止不必要的返回原始SynchroniZationContext . 例如: async Task Something() { // Let's say I'm on the UI context //... await AnotherTask.ConfigureAwait(fal... -
21 votes1 answers1148 views
为什么我需要在所有传递闭包中使用ConfigureAwait(false)?
我正在学习异步/等待,在我读完这篇文章之后Don't Block on Async Code 这个Is async/await suitable for methods that are both IO and CPU bound 我从@Stephen Cleary的文章中注意到了一个提示 . 使用ConfigureAwait(false)来避免死锁是一种危险的做法 . 您必须对阻塞代码调用的所... -
157 votes4 answers707 views
如何将此foreach代码转换为Parallel.ForEach?
关于 Parallel.ForEach 我有点困惑 .什么是 Parallel.ForEach ,它到底是做什么的?请不要引用任何MSDN链接 . 这是一个简单的例子: string[] lines = File.ReadAllLines(txtProxyListPath.Text); List<string> list_lines = new List<string>(l... -
1 votes1 answers779 views
.Net Parallel,Task API和常规线程
据我所知,Parallel API在内部使用线程池并将它们排队以进行并行处理,但是,当我使用SOS调试器检查一个这样的并行循环的执行时,我的理解是,如果我排队了10个任务,那么所有这些都可能不并行,CLR会决定为要执行的给定任务分派多少线程,因此可能是4或5或6(每次执行中的数字不同) 但是,如果我的总任务数如果不是很高,如10并且我希望所有这些都并行,因为所有这些都是长时间运行的,那么最好将它们... -
13 votes1 answers451 views
Parallel.For(Foreach)将创建多少个线程?默认MaxDegreeOfParallelism?
我想知道,当我运行Parallel.For / ForEach循环时将使用多少个线程 . 我发现,它可以通过MaxDegreeOfParallelism选项进行更改 . MSDN上的MaxDegreeOfParallelism帮助说(link): 默认情况下,For和ForEach将使用底层调度程序提供的许多线程,因此从默认值更改MaxDegreeOfParallelism仅限制将使用多少并发任... -
2 votes0 answers1051 views
优化并行循环性能
我有一个场景,我需要迭代6400万个组合,并且每个组合都为64,000项数据执行相同类型的处理逻辑 . 我注意到,根据我如何配置循环逻辑 - 性能,即使在并行循环中,也可以减少或增加 . 以下是3种情况: 常见数据: int numberofSets = 3; int set1ElementCount = 5840; int set2ElementCount = 5840; int set3El... -
19 votes2 answers1210 views
在Parallel.Foreach中分块IEnumerable
有没有人知道让Parallel.Foreach循环使用块分区的方法,我认为默认情况下是范围分区 . 使用数组时似乎很简单,因为您只需创建自定义分区程序并将负载均衡设置为true即可 . 由于IEnumerable中的元素数量直到运行时才知道,因此我似乎无法找到使块分区工作的好方法 . 任何帮助,将不胜感激 . 谢谢! 我试图在每个对象上执行的任务执行的时间明显不同 . 最后,我通常会等待最后一个线... -
1 votes0 answers859 views
Parallel.For和/或Parallel.ForEach不会产生新线程
为了完整起见,我在这里搜索并阅读了其他文章,例如: Parallel.ForEach not spinning up new threads 但他们似乎没有解决我的情况,所以关闭我们去: 我有一个数组结构的Parallel.ForEach,如下所示: Dim opts As New ParallelOptions opts.MaxDegreeOfParallelism = intThreads ... -
0 votes2 answers1420 views
使用私有方法调用的并行ForEach查询
谁能告诉我以下代码是否在C#中是线程安全的: ConcurrentBag cb = new ConcurrentBag(); Parallel.ForEach(someCollection, (param1) => {` `cb.Add(GetOutput(param1)); }); private SomeClass GetOutput(InputParameter param... -
-1 votes1 answers1743 views
创建函数的多个线程[关闭]
我正在进行一个项目,我坚持一个点,我必须并行运行两个方法 . In Function 1 在我的应用程序中,我正在做的是从IP摄像头抓取图像并将该图像存储到一个文件夹中 . 此功能用于连续流式摄像机 . 为此你可以参考我问过IP Camera stops streaming这个问题 . In Function 2 我将从我的Function2转储图像的路径中选择图像 . 在这里,我正在做一些其他操... -
2 votes1 answers363 views
立即停止Parallel.ForEach
我在每个循环停止并行时遇到问题 . 我正在迭代一组从表中检索到的大约40.000个DataRows,当我在结果集中有100个项目时,我需要立即停止循环 . 问题是当我在ParallelLoopState上触发Stop方法时,迭代不会立即停止,导致我的结果集不一致(无论是少数项还是多项) . 有没有办法确定,一旦我停止,我就会杀死所有线程? List<DataRow> rows = ne... -
7 votes1 answers750 views
iOS:核心图像和多线程应用程序
我试图以最有效的方式运行一些核心图像过滤器 . 试图避免内存警告和崩溃,这是我在渲染大图像时得到的 . 我正在看Apple的核心图像编程指南 . 关于多线程,它说: "each thread must create its own CIFilter objects. Otherwise, your app could behave unexpectedly." 这是什么意思? ... -
10 votes1 answers596 views
Spring WebFlux和Reactor的线程模型
目前正在尝试使用 Spring 5.0.0.RC2 , Reactor 3.1.0.M2 和 Spring Boot 2.0.0.M2 进行反应式编程 . 想知道WebFlux和Reactor用来正确编写应用程序并处理可变状态的 concurrency and threading model . Reactor doc声明该库被认为是并发不可知的,并提到了Scheduler抽象 . WebFl... -
0 votes0 answers1818 views
Python MultiThreading 2网站
我有这个脚本 . 它从网站获得了驱动程序 Headers . 我想多线程这个,以便它也从另一个网站获得驱动程序 Headers . 如果您选择帮助,请为您演示任何网址 . 对任何人的帮助来说真的意味着很多 来自selenium import webdriver startTime = time.time() options = webdriver.ChromeOptions()options.... -
2 votes2 answers1841 views
java synchronized,不同的输出弹性
为什么输出有差异 . 我有2个案例 . 1.在第一种情况下,我使用静态函数f1和f2 public static synchronized void f1() { for(int i=0; i< 100; i++) System.out.print("A"); } public static synchronized void f... -
0 votes1 answers681 views
VM上的Azure“百分比CPU”度量标准
究竟是什么测量? 我在Azure中有一个带有 16 vCPUs 的Debian VM . 我用它来运行tensorflow . Azure门户网站上的度量标准“ Percentage CPU ”显示平均值为33.5% . 我担心的是我可能没有充分利用所有16个vCPU . 让我感到困惑的是 top 命令显示了一个占主导地位的600%CPU的Python进程 . 为什么这个数字与Azure的33.... -
5 votes1 answers1292 views
为什么log4net线程会等待?
上周,我们的一个测试服务器用完了日志驱动器上的磁盘空间 . 在释放磁盘空间后,我仍然有几个带调用堆栈的线程似乎被卡在log4net AppenderSkeleton.DoAppend中,这让我感到困惑,因为我期望log4net是线程安全的 . 我是否正确看到线程被卡住了? 堆栈是否表示线程卡在'lock(this)'或其他地方?我的猜测在其他地方,因为我希望看到像Monitor.Enter... -
6 votes3 answers878 views
使用连接池和JSCH
我正在使用JSCH进行文件上传sftp . 在当前状态下,每个线程在需要时打开和关闭连接 . 如果可以使用与JSCH的连接池以避免由大量连接打开和关闭引起的开销? 这是从线程内部调用的函数示例 public static void file_upload(String filename) throws IOException { JSch jsch = new JSch(); Se... -
9 votes7 answers887 views
有没有办法确定.NET线程何时终止?
我试图找出是否有办法可靠地确定托管线程何时即将终止 . 我正在使用包含对PDF文档的支持的第三方库,问题是为了使用PDF功能,我必须显式初始化PDF组件,完成工作,然后在线程终止之前显式取消初始化组件 . 如果未调用uninitialize,则抛出异常,因为未正确释放非托管资源 . 由于线程类是密封的并且没有事件,我必须将线程实例包装到一个类中,并且只允许该类的实例来完成工作 . 我应该指出,这是... -
5 votes4 answers1173 views
当应用程序终止时,我可以安全地依赖线程中的IsBackground吗?
我正在GUI中运行一些后台线程 . 目前我正在实现个人线程取消代码,但线程中有IsBackground属性,根据MSDN,它们将自行取消 . 我知道它会变成令人讨厌的Thread.Abort(),但是在这个后台线程中没有任何东西需要保持正确的状态或需要适当的清理 . 如果用户只是在后台线程中间关闭应用程序,我试图避免任何崩溃 . 由于多线程场景很难测试,我想就此主题发表意见 . 基本上,我只是设置... -
2 votes3 answers1043 views
CreateProcess函数中的问题!
我有我的主应用程序,从我的主应用程序我将调用另一个模块(第三方)在我的主应用程序中执行一个小操作,当我调用该模块时...特定时间的进程说5秒 . 它在commmand窗口中显示了一些信息的进程..现在我的主应用程序等待被调用的模块完成它的进程 . 现在我的问题是......如何操作我隐藏这个命令窗口而不会干扰它的进程..我试图使用创建过程但它似乎不起作用...... 例如:我的主应用程序是父进程,... -
7 votes2 answers1398 views
如何在注入的DLL中正确终止工作线程?
我正在向某个进程注入一个DLL,该DLL有一个正在运行消息循环的工作线程 . 我想正确地退出线程,即发布一个退出消息(PostThreadMessage)并等待它(WaitForSingleObject) . 我在哪里可以等待这个线程关闭?我无法在DLL_PROCESS_DETACH上执行此操作,因为此时所有线程都已关闭或终止,我不知道该进程何时即将关闭 . 我唯一的想法是,有没有办法拦截主线程消... -
0 votes2 answers1601 views
如何转移线程以将消息发布到新窗口
我有一个线程,我通过一个窗口的HWND,它发布消息并更新进度条 . 然而,用户可以转到另一个窗口(模态),我也想显示该线程的进度 . 传递初始HWND显然是直截了当的,但是如何在线程运行时转移线程将消息发布到新窗口?这是一个c工作线程 . 我使用的是Windows 7,MFC,C . -
1 votes1 answers618 views
MFC发送消息到MAIN线程(而不是窗口)?
我正在使用MFC和C为Windows编写GUI应用程序 . 所以我需要从我的工作线程向我的MAIN线程发送消息,告诉它更新我的GUI . 但是我不确定如何将消息发送到实际的MAIN线程而不是Window . 因为它是我可以看到它收到消息时在MAIN线程中,但我不确定这是保证还是运气 . 在 Worker : PostMessage( *myTestToolDlg, WM_YOU_HAVE_DATA... -
0 votes1 answers549 views
定期在Realm中保存对象
我有一个名为 Trip 的Realm对象 . 它存储用户移动的数据 . class Trip: Object { dynamic var id: Int = 0 dynamic var startTimestamp: Int64 = 0 dynamic var endTimestamp: Int64 = 0 dynamic var distance: Double ... -
3 votes0 answers277 views
从.NET任务中提升COM事件?
我创建了一个暴露给COM的.NET类,并从VB6应用程序中使用 . 这个.NET类运行一个Task,它引发了一些事件 . 似乎这些事件是在VB6应用程序的主线程中引发的,而且一切正常 . 我试图了解它是如何工作的 . 事件是否以某种方式封送到主线程 - 通过.NET还是COM?根据我的阅读,如果正在使用STA线程,那么来自该线程外部的调用将使用Windows消息队列进行封送 . 从VB6调用.NE... -
0 votes1 answers1084 views
一直评估socket.recv()
我有一个在Raspberry Pi 3上运行的客户端脚本 . 客户端从服务器接收它是TRUE还是FALSE . 在此之后,它接收一个类似字节的对象,并对其进行解码并使用此信息在GUI中显示图像 . 它会检查按下按钮时GPIO引脚是否为TRUE,然后循环回到第一个.recv() . 我希望客户端一直检查它是否收到消息“新游戏”,如果是,则转到第一个.recv(),检查它是否为TRUE或FALSE ....