所有问题: [multithreading]

3,432 个问题

类似标签:python-multithreading
4
投票
2答案
467 次观看

模拟页面生命周期以从UI层获取html

我正在使用一个相当大的.net Web应用程序。 用户希望能够将报告导出为PDF。由于报告基于多层数据的汇总,因此获取准确快照的最佳方法是实际拍摄UI快照。我可以使用UI的html并将其解析为PDF文件。 由于UI可能最多需要30秒的加载时间,但结果永远不会改变,因此我希望在项目保存到后台线程后立即缓存pdf。 我对这种方法的主要担心是,如果我通过UI,则必须担心超时。尽管后台线程之类的内容可以根据需要持续使用多长时间,但是aspx页面只能持续使用很长时间,直到它们终止。 我有两个主意如何解决这个问题。第一个想法是创建一个ASPX页面,该页面可加载UI,覆盖渲染并将渲染的数据存储...

1
投票
5答案
541 次观看

使用内存屏障

在下面的代码示例中,是否需要 FuncA 中的内存屏障以确保读取最新的值? class Foo { DateTime m_bar; void FuncA() // invoked by thread X { Thread.MemoryBarrier(); // is required? Console.WriteLine(m_bar); } void FuncB() // invoked by thread Y { m_bar = DateTime.Now; } } 编辑:如果没...

70
投票
12答案
49178 次观看

如何在关闭表单事件中停止BackgroundWorker?

我有一个生成BackgroundWorker的表单,该表单应更新表单自己的文本框(在主线程上),因此应调用Invoke((Action) (...));。 如果在HandleClosingEvent中我只是做bgWorker.CancelAsync(),那么我在ObjectDisposedException呼叫中得到Invoke(...),这是可以理解的。但是如果我坐在HandleClosingEvent并等待bgWorker完成,那么.Invoke(...)永远不会返回,这也是可以理解的。 有什么主意,我该如何关闭该应用程序而不会出现异常或死锁? 以下是简单的Form1类的3种相关...

2
投票
5答案
507 次观看

内存壁垒和大型结构?

比方说,我有一个包含100个字节的结构。我对以下代码有什么保证? m_myLargeStruct = someValue; // copying 100 bytes Thread.MemoryBarrier(); // Executed by another thread, after "Thread.MemoryBarrier" was called by the first thread Console.WriteLine(m_myLargeStruct.ToString()); 内存模型是否可以确保在放置内存屏障后完成100字节的复制?还是内存障碍仅适用于处理器架构大小...

2
投票
3答案
167 次观看

javax.persistence.Query对象是否可缓存?

我正在编写无状态EJB。 我有类似的方法: public String getXxx(final String userId) throws ... { final Query query = em.createNativeQuery(...); query.setParameter(1, userId); return (String)query.getSingleResult(); } 我可以缓存在加载时实例化它并在多线程环境中使用它的查询对象吗? private static final Query query = em.createNativ...

1
投票
1答案
192 次观看

如何让某个线程处理事件(与UI线程问题无关)?

我正在自学基于线程的编程技术,并且这个问题可能还很遥远。如果合适,请问我应该问什么问题。 我试图让某个线程处理一个事件(触发该事件的线程的助手),但是我不希望UI线程处理该事件。需要明确的是,我不希望这样做: private void UpdateFromNewFrame(WindowFrame frame) { if (InvokeRequired) { BeginInvoke(new WindowUpdateHandler(UpdateFromNewFrame), new object[] { frame }); return; ...

0
投票
2答案
378 次观看

Silverlight,在处理过程中更新UI

我有一个简单的Silverlight多文件上传应用程序,我想向用户提供一些反馈,目前它仅在测试阶段,我没有Web服务。我不知何故无法更新ui: private void DoUpload() { foreach (UploadFile file in fileInfos) { int BUFFERSIZE = 1024; int offset = 0; //get from webservice, when partial file FileStream s = file....

1
投票
3答案
4783 次观看

主应用程序忙时如何避免线程冻结

我有点问题。我想显示一个进度表,当主应用程序执行繁重的操作时,该进度表仅显示一个动画。 我已经在线程中完成了此操作,当用户不执行任何操作时,它可以正常工作。但是当我的主应用程序很忙时,它就停止了。 我无法将Application.ProcessMessages放在不同的代码行之间,因为我正在使用处理时间很长的3rdparty组件。 我的想法是创建一个新流程,并在该流程中创建一个执行动画的线程。现在,这不会停止在主应用程序执行繁重的操作时执行线程表单。 但是据我所知,只有执行新程序,您才能创建一个新进程。 在主应用程序繁忙时,是否有人有办法使线程继续执行? /布莱恩

0
投票
3答案
360 次观看

多核计算机上的线程行为

单个进程的线程是否可以在Windows XP的多核计算机上并行运行?在不同的Windows版本(Windows服务器版本)上的行为是否相同 我听说只有不同进程的线程并行运行。

3
投票
4答案
10270 次观看

轮询Windows服务的计时器

我编写了一个Timer类,以便在轮询另一个系统的Windows服务中使用它。我这样做是因为我遇到了两个问题System.Timers.Timer无法解决。 Elapsed EventHanler在后台运行,因此如果主线程结束,则其执行将中止。我希望System.Timers.Timer.Stop函数阻塞主线程,直到Elapsed EventHanler的执行结束为止。 System.Timers.Timer不处理事件重入。我希望时间间隔在两个Elapsed EventHanler之间,以便如果以前的调用(+ interval)尚未完成,则计时器永远不会调用Elapsed Even...

8
投票
4答案
8817 次观看

使用Enterprise Library 4.1从多个进程登录到同一文件

我有多个要同时运行的进程,我想登录到同一文件。 我们一直在使用Enterprise Library 4.1 Logging Application Block(带有RollingFlatFileTraceListener),并且工作正常,除了以下事实:当两个进程试图在日志文件名中写入GUID时,GUID会在日志文件名前添加GUID。同一时间(我相信有System.Diagnostics.TextWriterTraceListener个怪癖)。 我已经尝试了各种方法,包括在写入日志文件后调用Logger.Writer.Dispose(),但是每次写入日志条目时都进行阻塞调用是不理想的。...

0
投票
5答案
2291 次观看

线程和队列与串行性能

尽管看线程和队列会很有趣,所以我写了2个脚本,一个脚本将文件分解并加密线程中的每个块,另一个脚本将串行地执行。我对python还是很陌生,真的不知道为什么执行脚本要花这么长时间。 线程脚本: #!/usr/bin/env python from Crypto.Cipher import AES from optparse import OptionParser import os, base64, time, sys, hashlib, pickle, threading, timeit, Queue BLOCK_SIZE = 32 #32 = 256-bit | 16 = ...

3
投票
3答案
1733 次观看

没有窗口的新创建线程的“窗口过程”

我想为一些数据库写操作创建一个线程,该线程在数据库不存在的情况下不应阻止ui。为了与主线程同步,我想使用Windows消息。主线程将要写入的数据发送到写入器线程。 发送没有问题,因为CreateThread返回新创建线程的句柄。我考虑过要创建一个标准的Windows事件循环来处理消息。但是,如何在没有窗口的情况下将窗口过程作为DispatchMessage的目标呢? 标准Windows事件循环(来自MSDN): while( (bRet = GetMessage( &msg, NULL, 0, 0 )) != 0) { if (bRet == -1) {...

1
投票
3答案
196 次观看

线程池帮助

这里的Threadpooling有一些问题,请帮忙。我正在尝试编写一个Generator,我需要允许用户使用以下代码生成多达10,000行。问题在于这行 WaitHandle.WaitAll(doneEvents); 一次只能处理64个WaitAll,在这种情况下,如何最好地将线程池应用于代码? public void GenerateInsertStatements(int iRequiredRows) { // One event is used for each row object ManualRese...

4
投票
3答案
3379 次观看

无锁标准集合和教程或文章

有人知道用于实施无锁常规数据类型的良好资源(意味着源代码)吗?我在考虑列表,队列等吗? 锁定实现非常容易找到,但是我找不到无锁算法的例子,以及CAS到底如何工作以及如何使用CAS来实现那些结构。

5
投票
3答案
8995 次观看

创建在另一个线程上运行的进度条,同时将计算保留在主线程中

前言:我知道这是一种不寻常/不合适的方法。我可以使用“真实的” ShowDialog(),后台工作程序/线程等来完成此操作。我不是在寻求这样做的帮助;我正试图做我在这里描述的事情,即使它很丑。如果由于X原因无法执行此操作,请让我知道。 我为一些长期运行的操作创建了一个精美的进度对话框。我需要在新线程上显示此对话框,同时在调用线程(大多数情况下是UI)上继续进行处理。 这有3个实际要求: 防止用户与调用表单进行交互(类似于ShowDialog(this)) 将进度对话框保留在主窗口上方(它可能会紧随其后) 允许主线程继续处理 我所看到的是这样的(到目前为止,运行正常,除...

1
投票
3答案
609 次观看

了解ASP.Net实例和线程

使用一个简单的aspx页面查看一个托管在IIS中的非常简单的Web项目,执行一些代码(从db中获取一些数据并填充一些控件),以下哪一项是正确的: 每个页面请求共享相同的Codebehind类实例。 或每个页面请求都在其自己的codebehind类实例中运行。 是否对每个aspx页运行一个线程/实例。还是一个线程/实例覆盖了多个页面? 我试图在一个简单的Web项目中理解它接收了100个页面请求,它们将一个接一个地连续运行,还是每个请求有多个实例/线程?

2
投票
3答案
2135 次观看

线程终止问题(C编程)

我正在使用C使用多个线程的Linux应用程序。 main函数产生的线程完成了大部分工作,因此通常最后完成。我看到一些奇怪的行为,并且我相信这是由于主线程在生成的线程有机会完成其工作之前终止。这是一些示例代码来说明我在说什么: #define _POSIX_C_SOURCE 200112L #define _ISOC99_SOURCE #define __EXTENSIONS__ #define _GNU_SOURCE #include <pthread.h> #include <stdio.h> void my_cleanup(void *arg) { ...

4
投票
1答案
384 次观看

Visual Studio 2008 .Net-跨当前流程

我尝试调试几个相互通信的应用程序-并希望有能力在不切换到另一个进程/线程的情况下进行跨接。 因此,Visual Studio具有命令“逐步执行当前进程(Ctrl-Alt-F10)”-看起来像我想要的,但是已被禁用,为什么? 除了C ++,我发现了同样的问题: 在Visual Studio中调试多线程程序时“跳过” 那么写宏也是.net的唯一方法吗?

4
投票
1答案
1135 次观看

在后台线程中调用LocalReport.Render

我已经使用Winforms ReportViewer控件已有一段时间了。我添加了一个自定义工具栏,并正在手动处理所有报告功能。 我的问题是报告过大。为了将报告呈现为Image(用于打印),我调用ReportViewer.LocalReport.Render方法。较大的报告最终导致UI冻结了一段时间。 我的计划是在请求报告时“预取”渲染的图像。我正在尝试在后台线程中执行此操作。我尝试的所有操作都会导致UI在“渲染”调用期间无响应。 关于Render调用是否存在某些问题,可能导致线程(与UI线程无关)以某种方式锁定UI线程?

5
投票
1答案
5425 次观看

NSOperation和CoreData线程

我正在使用并发级别最大为1的NSOperationQueue在两个线程之间传递一些NSManagedObject数据,我想对我是否正确执行操作提出一些建议。 由于NSManagedObject不是线程安全的,所以我通过NSOperation派生类将NSManagedObjectID从ThreadA(主线程)发送到ThreadB。常规工作流程: ThreadA(主线程): 创建NSPersistentStoreCoordinator 创建主要的NSManagedObjectContext(1) 创建要在workerThread中使用的NSManagedObjectCont...

2
投票
3答案
4139 次观看

如何使用线程池处理新线程中的每个连接

我有一个简单的服务器,它在等待客户端连接,读取传入的流并向其发送消息。我想做的是让每个连接都由单独的线程处理。这是我第一次使用C#处理套接字和线程,我发现的大多数示例确实令人困惑,因此,任何帮助或简单示例都将不胜感激。 这就是我现在所拥有的。 using System; using System.Collections.Generic; using System.Net; using System.Net.Sockets; using System.Text; [STAThread] static void Main(string[] args) { ...

1
投票
2答案
745 次观看

用ReentrantReadWriteLock持有锁的线程失败时会发生什么?

如果持有ReentrantReadWriteLock.writeLock()的线程由于未捕获的异常而停止执行,该锁是否已释放,或者它已被持有并且所有其他线程现在都已死锁?

3
投票
2答案
3357 次观看

Gdiplus线程安全吗?

我仔细阅读了MSDN文档,但找不到一种或另一种说法。我感兴趣的是: 我可以在一个线程上调用GdiplusStartup(),然后在另一个线程上使用Gdiplus吗?还是我需要为每个线程调用GdiplusStartup()? 如果我在线程1上有一个Bitmap对象,而在线程2上有一个不同的对象,它们是否可以同时调用Bitmap :: DrawImage(),还是需要添加锁定以确保序列化? 谢谢。

1
投票
7答案
1287 次观看

锁定main()线程

此处的术语不确定,但基本上我可以进入我的应用程序的main()线程,该线程启动并调用两个线程,其中一个设置事件处理程序以等待特定的注册表项更改,而另一个设置启动一个计时器,每隔5分钟左右将对XML文件所做的任何更改写入其中,然后连续运行。我的问题是,一旦调用的两个方法都初始化,它将返回到main并结束程序。我的相关代码部分可以在下面找到,因此可以提供任何帮助: static void Main(string[] args) { runner one = new runner(); runner two = new runner(); ...

4
投票
2答案
849 次观看

非UI线程中的Silverlight和回调

在异步任务(例如事件侦听或网络请求)之后,Silverlight是否曾经在非UI线程中回调过? 假设我没有创建自己的线程。 谢谢, 瑞

0
投票
2答案
465 次观看

Windows Service无法在Win 2003 Server中启动线程

我的Windows服务能够在Win XP中启动线程(起诉ThreadStart委托),但是在Win 2003 Server中它不能,也不会引发异常……线程根本无法启动。 我进行了一个测试Windows服务,该服务在(OnStart)事件处理程序中具有相同的代码,并且在Win XP和Win 2003 Server上均可使用,这使我发疯,我不知道我的原始服务有什么问题,为什么它无法启动线程。 这是我有问题的Win Service和正常运行的测试Win Service中的代码: private Thread trd; StreamWriter sw; int i...

1
投票
1答案
563 次观看

将事件通知移至另一个线程

我正在使用一个第三方库来提供对数据库的访问。在数据库连接对象中,有一个名为Updated的事件,该事件在修改数据库时触发。 当我的代表想要从数据库中读取数据时,我遇到了麻烦。看起来该连接具有ReaderWriterLock保护数据库。在ExecuteNonQuery调用过程中,将使用写作者锁,但在事件触发前不会释放。因此,如果我想阅读,我会陷入僵局。 我开始编写一个单独的线程,该线程将从数据库连接中获取事件,并将其传递给已注册的委托人,但这感觉像是一个草率的解决方案。我想念一个简单的方法来解决这个问题吗? 真正困扰我的是,我并不总是遇到僵局。但是,当我点击它并查看调用堆栈时,它一直...

6
投票
2答案
2542 次观看

1055 Delphi错误是什么?重要吗?

我正在使用FindFile例程搜索目录中的所有文件。原始代码可从 Latium Software 免费获得。它运行FindFile是一个单独的线程。 它一直运行良好,并且仍然可以正常运行。但是自从我从Delphi 4升级到Delphi 2009以来,它现在发出警告: W1055: Published caused RTTI ($M+) to be added to type '%s' (Delphi) 此线程声明的“已发布”行处发生错误: TThread1 = class(TThread) private OwnerForm: TFindFileForm;...

32
投票
4答案
13694 次观看

在计时器的回调方法中引发异常

我在任何地方都找不到这个问题的答案... 在System.Threading.Timer的回调方法中(或在System.Timers.Timer的事件处理程序中)引发的异常会发生什么情况。是该异常传播到创建计时器的线程上还是丢失? 在计时器的回调函数中引发异常的副作用是什么? 向计时器的创建线程发信号通知工作线程(回调方法)中的异常已被抛出的正确方法是什么? 感谢您的时间。