草庐IT

linux线程同步

全部标签

使用 Windows API 比较线程 ID

我正在使用WindowsAPI线程,我想比较线程ID。首先,我用CreateThread()创建了一个线程并存储我从函数中获取的句柄(HANDLE)和ID(LPDWORD)。然后我使用GetCurrentThread()从创建的线程中获取句柄和ID和GetThreadId().对于两个句柄和两个ID,我总是得到不同的值。有没有办法以类似于pthread的方式比较线程?我这样做是为了作为确认正确执行的调试选项。我总是从其他库(pthread.h、threads.h)但不是从Windowsapi得到正确的结果。这不是一个关键问题,但我想学习winapi中的程序

c - 如何在线程/进程之间可移植地共享变量?

我有一个服务器,它为每个传入请求生成一个新进程或线程,我需要从线程和进程读取和写入在该服务器中定义的变量。由于服务器程序需要同时在UNIX和Windows上运行,我需要以可移植的方式共享变量,但我该怎么做呢?我需要使用标准C库或native系统调用,所以请不要推荐第三方库。 最佳答案 sharedmemory是特定于操作系统的。在Linux上,考虑阅读shm_overview(7)和(因为使用共享内存,你总是需要某种方式来同步)sem_overview(7).当然,您需要找出相似(但可能不等同)的Windows函数调用。注意thre

c++ - 从不同线程调用的 XInputGetState 和 XInputSetState

我有一个捕获Controller输入的线程。这是该线程所做的唯一事情-它每x毫秒调用一次XInputGetState()并将结果存储在一个同步的循环缓冲区中。当达到特定条件时,我有另一个线程通过XInputSetState()振动Controller来对此输入使用react。换句话说,一个线程只会调用XInputGetState(),而另一个线程只会调用XInputSetState()。从理论上讲,不可能同时多次调用任一函数。如果没有同步,这样做仍然不安全吗?注意:这两个函数处理完全不同的数据集,但实现最有可能读取/写入不同步的内容。 最佳答案

c++ - Qt widget 背景从 Linux 到 Windows 不同

我要实现一个跨平台的Qt程序。我有一个我不明白的问题:当程序在Windows上执行时,某些小部件的背景颜色不正确。首先,我用C++编写的程序得到了完全相同的结果,所以我认为这不是Python特有的问题。我将我的代码简化为一个显示“错误”的简单程序。我不确定是哪个小部件导致的,所以我简单地包含了实际程序中使用的所有元素。这是它在Linux上的样子:这是背景错误的Windows渲染:代码如下:importsysfromPyQt4.QtGuiimportQApplication,QMainWindow,QVBoxLayout,QTabWidget,QWidget,\QGroupBox,QVB

linux - 在 Windows 上将程序作为(linux 风格)前台终端进程运行?

有谁知道如何产生类似的结果?(本质上是将Windows终端绑定(bind)到打开的程序)例如,当您在bash(或另一个linux终端)中运行“emacs”时,它将在打开的终端中产生一个输出,直到程序终止(或使用emacs&)我希望能够在Windows上重现这种效果,但不知道如何运行start(和类似的命令)只会在新窗口中运行该程序,并带有隐藏的命令行,与cmd行进程分离。 最佳答案 你需要/B标志:start/Bmyprogram(当然,这只适用于实际使用控制台的程序。如果程序不生成控制台输出,这不会神奇地让它这样做。)

windows-phone-8.1 - 使用 Windows 通用应用程序在设备之间同步数据

我是通用Windows应用程序开发的新手,我正在寻找一些方法来共享在WindowsPhone应用程序和Windows应用程序上创建的数据(在每个设备数据库上),反之亦然,我不想涉及网络服务器来管理这个,唯一的异常(exception)可能是用户的onedrive,我认为Windows应用程序(rt或桌面)版本是否可以运行一些服务来通过wi-fi处理这个问题?或者使用onedrive备份和恢复数据库的某种方式? 最佳答案 您应该使用漫游应用数据。我不知道你的数据库有多大。但是为了保持完整性,您可以将每个表序列化为JSON并存储它。很简

c++ - 在 Windows 上使用 WaitForSingleObject 但支持 boost 线程中断

Boost线程具有“可中断”的便利特性。该框架在您sleep等时引入了中断点。但是,使用阻塞Win32调用可以规避此功能。例如,WaitForSingleObject会阻塞一个线程,但不会让它被boost线程的中断机制打断。有什么方法可以包装WaitForSingleObject或告诉boost等待Win32事件句柄,以便我可以重新获得中断点? 最佳答案 detail::win32::interruptible_wait实现了这一点。如您所见,它等待3个句柄(除了调用者指定的句柄之外还有2个)以接受中断。具体看WaitForMult

python - 我们如何在 Linux 中使用 sleep() 来保持合理的 CPU 使用率,同时仍然具有良好的计时精度?

问题我正在尝试测试一个使用UDP数据包以预定速率进行通信的系统。我希望能够使用具有设定数据包速率的Python测试工具来测试该系统。采样率可能是20个数据包/秒或4500个数据包/秒等。在一些简单的测试中,我确定我的Windows机器每秒可以通过本地主机传递超过150,000个UDP数据包,因此我可以将其视为实验的上限。让我们从这个shell结构开始创建一个速率限制器。此代码的灵感主要来自thisthread中的代码.方法一importtime,timeitclassRateLimiter:def__init__(self,rate_limit):self.min_interval=1

linux - 在 makefile 中添加特定于平台的标志

我需要在我的makefile中设置几个标志,这些标志只需要特定于Windows,即,我不希望它们在其他操作系统上被“看到”。我正在使用MinGW来构建我的项目。这些是我只想为Windows设置的标志:AM_LDFLAGS+=-lws2_32AM_LDFLAGS+=-Xlinker--allow-multiple-definition这是我在makefile.am中所做的:SYS:=$(shellgcc-dumpmachine)ifneq(,$(findstringmingw,$(SYS)))AM_LDFLAGS+=-lws2_32AM_LDFLAGS+=-Xlinker--allow-

linux - 相当于 Linux 的 "screen"

有没有类似于Linux的“screen”的东西?我想要做的是启动用Java创建的控制台应用程序。然后假设我想对正在运行的应用程序执行命令。例如,我想告诉它退出,所以我会告诉它命令“退出”。在Linux上,我可以“在screen中”打开应用程序,稍后如果我想告诉它任何命令,我可以附加“screen”,告诉它命令并分离。我不需要screen,但我需要可以做到这一点的东西。如果我可以在不安装任何额外软件的情况下做到这一点,那就太棒了。 最佳答案 您可以安装cygwin并在cygwin安装screen中。