草庐IT

线程id

全部标签

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

windows - 确定事件窗口名称或 ID

你好,我正在使用VB2008是否可以获取事件窗口名称或ID?例如我有事件的记事本窗口,现在我如何获得它的进程名称或进程?id(最好是进程id) 最佳答案 您需要使用Pinvoke来执行一些Win32API来获取所有这些信息。以下是您需要使用的Pinvoke序列。GetForegroundWindow(获取当前事件窗口句柄-hwnd)GetWindowThreadProcessId(获取您在上述API调用中获取的hwnd的进程ID和线程ID) 关于windows-确定事件窗口名称或ID,我

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

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

c# - 我的线程在就绪队列中吗?

我需要记录特定线程在就绪队列中的时间和时间。我想知道是否有一种编程方式可以用C#来做到这一点。如果您需要更多信息,请告诉我...提前致谢,罗腾瓦隆。 最佳答案 您可以检查Thread对象的ThreadState属性。在此处查看可能的值:http://msdn.microsoft.com/en-us/library/system.threading.threadstate.aspxWaitSleepJoin表示它正在等待某事,Running表示据我所知它在“就绪队列”中。希望对您有所帮助。

c# - 如何在**没有**管理员权限的情况下获得稳定的机器 ID

出于简单的复制保护目的,我想生成一个小的string或int值来(某种程度上)唯一标识当前计算机。理想情况下,此值不会在简单的硬件外围设备更改后发生变化,甚至希望在完全重新安装Windows后也不会发生变化。在这里和其他地方找到的大多数答案都不令人满意,主要原因有以下三个:提供的代码不容易移植到C#。建议的硬件值通常不可用/为空(例如处理器ID甚至硬盘驱动器序列号)或不稳定(例如MAC地址)。涉及的代码需要更高的管理员权限。我搜索了几篇文章并找到了一篇有用的文章(HowToGetHardwareInformation),但由于#3在我的案例中是一个重要的考虑因素,我不确定我可以仅使用普

c++ - get_id 和 GetCurrentThreadId 的区别

我想通过boost::thread::get_id和GetCurrentThreadId获取线程id。但结果却不同。我使用boost::thread来做多线程。为什么同一个线程使用get_id和GetCurrentThreadId有两个不同的id?boost::thread*dl_thread=m_thread_group.create_thread(boost::bind(download,url,dest));*threadId=*reinterpret_cast(&dl_thread->get_id());DWORDthreadIdsss=GetCurrentThreadId()

windows - Windows 中允许线程等待直到另一个线程解除阻塞的正确线程同步对象是什么?

我有一个在Windows下运行的Delphi应用程序需要阻塞,直到另一个线程已传送数据。换句话说,我需要等待来自特定线程的同步对象,我可以将其置于非信号状态,就好像另一个线程拥有该对象的所有权一样,这样当我调用WaitFor()线程阻塞,直到其他线程之一解除它的阻塞(有多个潜在的线程可以解除并且事先不知道是哪一个)。请注意,所有线程都可以访问共享数据区域,因此访问公共(public)同步对象不是问题。我认为Events是正确的选择,直到我读到RaymondChen这篇关于PulseEvent()问题的令人不安的博文:http://blogs.msdn.com/b/oldnewthing

c# - 访问 SQL CE 数据库的线程安全方式

背景:在我的WindowsPhone项目中。我使用本地SQLCE数据库来存储日期。使用LINQtoSQL以编程方式创建数据库表。这个数据库是通过几个线程中的各种数据上下文实例访问的。问题是:我为我的应用程序的用户提供了一个选项来清除所有数据并注销。当用户选择它时,我使用数据上下文的DeleteDatabase方法删除数据库。但是,我总是收到数据库正在被另一个进程使用的错误,因此无法删除。任何朝着正确方向的插入都会让我开心。 最佳答案 Andy如上所述(老实说他们打败了我)问题是在另一个进程仍然打开连接时访问数据库。基本上可以通过将针

c# - 锁定文件同时保留在同一线程中读取/追加/写入/截断的能力?

我有一个文件,粗略地说,包含应用程序的状态。我想实现以下行为:当应用程序启动时,锁定文件,以便其他应用程序(或用户本身)无法修改它;从文件中读取之前的应用状态;...做工作...用新状态更新文件(给定文件格式,涉及重写整个文件;操作后文件的长度可能会减少);...做工作...再次更新文件...做工作...如果工作失败(应用程序崩溃),则解除锁定,文件内容保留为执行前一个工作单元后的内容。看来,要重写文件,应该使用Truncate选项打开它;这意味着每次他们想要重写文件时都应该打开一个新的FileStream。所以看起来我想要的行为只能通过这种肮脏的方式来实现:当应用程序启动时,读取文件