草庐IT

线程不安全

全部标签

带有 WebRequest 的 C# 多线程程序

首先我是论坛的新人所以请对我和我的英语有点耐心。:-)我正在编写一个C#应用程序,它应该将多线程SOAP请求发送到apache后端。到目前为止一切正常,但我遇到了问题。应用程序首先读取一个XML文件来自另一个系统,首先被解析为类,排序并发送到SOAP后端。这里是片段ListThreadsPerOneRecord=newList();boolExecuteSingleThreaded=false;//Thevariablelistispassedasparametertothefunctionforeach(Recordprovinlist){XMLResult.AppendText("

xml - 使用 XDocument.Load 的多线程

我试图让我的代码在一个单独的线程中工作,但无法让它工作。我尝试使用委托(delegate)从Internet获取几个不同的多线程示例,但没有解决我的问题。我需要通过URL从XML文件加载数据,然后在标签中显示XML中的一些数据。加载XML有时会花费很长时间,并且我的应用程序在加载过程中没有响应。我不知道我还应该尝试什么。这是一个无需多线程即可加载XML的示例(使UI无响应):DimxmlRoot1AsXElement=XDocument.Load("http://example.com/api/books.xml").RootLabel1.Text=xmlRoot1..(0)..Val

java - 线程 "main"java.net.MalformedURLException : unknown protocol: c 中的异常

我正在尝试使用SAX解析器来解析XML文件。尽管我的代码中不断出现以下错误:Exceptioninthread"main"java.net.MalformedURLException:unknownprotocol:catjava.net.URL.(URL.java:592)atjava.net.URL.(URL.java:482)atjava.net.URL.(URL.java:431)atcom.sun.org.apache.xerces.internal.impl.XMLEntityManager.setupCurrentEntity(XMLEntityManager.java:

c++ - 多线程不利用多核?

我的电脑是双核core2Duo。我已经在应用程序的缓慢区域实现了多线程,但我仍然注意到CPU使用率从未超过50%,并且在多次迭代后仍然滞后。这是正常的吗?我希望它能让我的cpu达到100%,因为我将它分成4个线程。为什么它仍然可以限制在50%?谢谢参见WhatamIdoingwrong?(multithreading)对于我的实现,除了我修复了该代码存在的问题 最佳答案 查看您的代码,您在紧密循环中进行了大量分配——在每次迭代中,您动态分配两个双元素vector,然后将它们推回结果vector(从而复制这些vector);最后一次推

c++ - 取消WIN32线程池中计划的work/io/timer项

我一直在研究Windows的(新的?)线程池API。我一直在关注UsingtheThreadPoolFunctions中的示例我一直在仔细研究MSDN上的API。关于清理组,我有些不明白。调用SetThreadpoolCallbackCleanupGroup()时,第三个参数描述为Thecleanupcallbacktobecalledifthecleanupgroupiscanceledbeforetheassociatedobjectisreleased.ThefunctioniscalledwhenyoucallCloseThreadpoolCleanupGroupMembers

c++ - 池化线程的 SetThreadAffinityMask

我想知道是否可以设置从线程池中获取的线程的处理器关联性。更具体地说,线程是通过使用我用来实现周期性任务的TimerQueueAPI获得的。作为旁注:我发现TimerQueues是实现周期性任务的最简单方法,但由于这些通常是长期任务,为此目的使用专用线程是否更合适?此外,预计需要使用信号量和互斥量等同步原语来同步各种周期性任务。池线程适合这些吗?谢谢!EDIT1:正如Leo指出的那样,上述问题实际上是两个松散相关的问题。第一个与池线程的处理器亲和性有关。第二个问题与从TimerQueueAPI获得的池化线程在涉及同步对象时的行为是否与手动创建的线程一样。我将把第二个问题移到一个单独的主题

windows - 无论如何,我无法让这个进度条从线程更新

我有一个用C语言(使用gcc/MinGW)编写的Windows应用程序,除了一些UI问题外,它运行良好。第一,我根本无法让进度条从线程更新。事实上,我可能无法更新任何UI内容。基本上,我有一个执行某些处理的派生线程,我尝试从该线程更新主线程中的进度条。我通过对主hwnd使用PostMessage()来尝试这个,但没有运气,即使我可以做其他事情,比如打开消息框。但是,不清楚消息框是在线程内还是在主线程上被调用。这是一些代码://inheader/globallyaccessibleHWNDwnd;//mainapplicationwindowHWNDprogress_bar;//prog

C++ 多线程执行速度变慢

我正在编写多线程C++应用程序。当线程A要执行计算量很大的操作时,它会减慢线程B、C和D的速度。我该如何防止这种情况发生? 最佳答案 在Windows上,您可以使用Sleep(0)为其他正在等待的线程释放剩余的时间片。 关于C++多线程执行速度变慢,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/5651170/

windows - 获取名称/描述 Startaddress 或从进程中的线程 (Delphi/Pascal)

ProcessHacker在C中有一个进程管理器。当您在流程管理器中双击某个流程时,例如探索者您会看到很多信息,包括:与流程相关的主题。PDD、周期增量开始、地址、优先级。好吧,我尝试在Delphi中做类似的事情,但我只得到TID和优先级...我不能把信息开始地址如下:“msiltcfg.dll0x258!”或者只能返回00630EFA。(原始)应用程序黑客显示下图中的信息:我该如何解决这个问题?基于下面的代码示例。procedureTForm1.Button7Click(Sender:TObject);vartbi:THREAD_BASIC_INFORMATION;hThreadSn

c++ - MFC WinApp在不同线程中调用InitInstance和OnAppExit/destructor

我在我们的一个客户环境中遇到问题-当我在OnAppExit(或析构函数)中使用AfxGetApp()->WriteProfileString时它不起作用。我无法在任何地方复制它。我追踪到OnAppExit是从与InitInstance不同的线程调用的——同样,这在我的任何机器上都不是真的。这会是问题所在吗?而且,为什么OnAppExit在不同的线程中被调用?谢谢。 最佳答案 如果您的应用中有线程生成错误并调用exit,则OnAppExit可能会在不同的线程上被调用。在正常使用情况下,OnAppExit应该只在您的主线程中调用。这是e