草庐IT

线程不安全

全部标签

用于从外部线程更改标签文本的 C# 通用方法。

好吧,所以这是(希望)一个非常简单的修复,但我正在尝试创建一个通用方法来允许外部访问标签,现在Windows文档确实针对单个案例给出了一个示例delegatevoidSetTextCallback(stringtext);...someothercode...privatevoidSetText(stringtext){//InvokeRequiredrequiredcomparesthethreadIDofthe//callingthreadtothethreadIDofthecreatingthread.//Ifthesethreadsaredifferent,itreturnst

c++ - 一个线程写入一个变量,另一个线程读取该变量我(C++11 之前)如何保护该变量?

我在C++11之前工作,否则我只会使用包含线程和原子变量来满足我的需要,但是,不能那样做。得到一个在实例化时启动多个线程的类。在一个线程启动函数中,我有类似的东西:voidThisClass::ThisThread(){while(runThisThread){//doingstuff}}另一个函数是:voidThisClass::StopThisThread(){runThisThread=false;//'runThisThread'variableis'volatilebool'}一个线程将根据另一个线程分配的索引咀嚼缓冲区。因此,一个线程会分配一个值,而另一个线程除了读取该值外

windows - 尝试在 Windows 32 位系统中创建超过最大可能数量的线程

当我尝试创建另一个线程时会发生什么(在达到最大线程数之后?) 最佳答案 当资源用完时,CreateThread将失败。ERROR_NOT_ENOUGH_MEMORY在正常配置中,ERROR_NO_SYSTEM_RESOURCES具有小堆栈保留。参见PushingtheLimitsofWindows:ProcessesandThreads了解更多详情。 关于windows-尝试在Windows32位系统中创建超过最大可能数量的线程,我们在StackOverflow上找到一个类似的问题:

windows - 在 PATH 环境中拥有本地目录不安全?

在实验室里,我的教授写道:Forsecurityreasons,thelocaldirectory'.'isNOTpartofthePATHenvironmentvariable[onUnix](onWindowsitis,though!).实验室的其余部分与此问题无关,并侧重于多线程程序,但是这一行让我感到困惑-我不知道它为什么不安全,也不知道它如何在Windows系统上被利用。为什么PATH中的本地目录可能不安全,这会导致什么样的攻击? 最佳答案 为了证明弱点,考虑当.是PATH中的第一个条目时的极端情况。如果恶意目录包含名为l

c++ - 仅消息窗口中的线程泵消息

我需要创建一个dll来管理Windows8.1/10上的一些IP蓝牙低功耗设备。我的第一个挑战是能够拦截连接/断开连接事件。我按照MSDN对registeringBluetoothdevicenotifications的说明设法实现了这一点,并按照RegisteringforDeviceNotifications例子。结果是一个工作控制台应用程序。接下来,我希望将它包装在一个DLL中,并有一个专门的线程泵来处理纯消息窗口的消息。问题:这是一个合理的解决方案,还是我最好使用调用线程为此窗口(显然既不是单一窗口也不是主要窗口)泵送消息?如果这是要走的路,我该如何创建一个线程来为特定窗口发送

linux - C++11线程库是否调用OS API来运行多线程程序?

众所周知,我们可以使用C++库编写通用的跨平台多线程代码(无论Linux还是Windows),我想知道为什么c++11使它变得简单,它实际上是调用OSAPI,还是使用一些其他技术? 最佳答案 C++只是一种您用来表达想法的语言。最后,您的二进制文件仍然必须使用操作系统的功能来执行任何需要系统级访问的操作,例如操纵系统调度程序(例如:创建线程)。您的编译器和库使用哪些操作系统功能来支持C++语言功能的详细信息可以在它们的文档中找到。我想大多数Linuxenvs在C++线程的引擎盖下使用pthread,而Windows环境使用win32

ruby-on-rails - 如何在不安装 Linux 子系统的情况下在 Windows 10 上运行 'rails credentials:edit'

我正在尝试在我的Windows10机器上的Rails应用程序上运行以下命令:railscredentials:edit但是我收到以下错误信息:No$EDITORtoopenfilein.Assignonelikethis:EDITOR="mate--wait"bin/railscredentials:editForeditorsthatforkandexitimmediately,it'simportanttopassawaitflag,otherwisethecredentialswillbesavedimmediatelywithnochancetoedit.我做了一些研究,我了解

c# - ASP.NET + 线程感知非托管 API

我正在考虑使用ESENT进行持久化的ASP.NET应用程序。目前这只是我的爱好项目,所以要求非常灵活。不过,我希望它能在Windows7、Windows2008和2008R2上运行,使用.NET3.5及更高版本和默认IIS设置。在ESENT中,大多数操作都需要您打开一个session对象。文档说:“一个session跟踪它在哪个线程上被使用,如果在多个线程上使用一个打开的事务,它将抛出一个错误。”API文档提到了native线程,而不是托管线程。我假设打开session操作的成本相对较高,这就是为什么我不想为每个HTTP请求打开/关闭session。最后是我的问题。在asp.net中,

windows - 简单的多线程互斥示例是不正确的

我希望以随机顺序获得从0到4的数字,但相反,我有一些不同步的困惑我做错了什么?#include#include#includeusingnamespacestd;voidaddQuery(void*v);HANDLEghMutex;intmain(){HANDLEhs[5];ghMutex=CreateMutex(NULL,FALSE,NULL);for(inti=0;i 最佳答案 您必须在锁内读取和写入共享变量。您正在锁外读取它,从而使锁变得无关紧要。但这还不够,因为您的共享变量是一个循环变量,您在没有锁保护的情况下写入该循环变量

windows - lua lane 线程间通信

有没有办法让luachannel线程进行通信或从外部访问线程?不使用文档提供的繁忙循环。一个简单的例子是,一个线程使用一个变量,更新它,改变它等等,另一个线程或主程序能够访问/获取该变量。这可以用luachannel吗?我的意思是纯粹在lua中而不是在c/c++中。 最佳答案 在使用多线程时,您通常donotwantto"update/change"avariablefrommultiplethreadswithoutanysynchronization-这可能会导致由于对变量/表等的不同步访问而导致随机出现的错误。相反,您应该依靠