草庐IT

linux线程同步

全部标签

windows - linux/windows内核模块中的无限循环

在ubuntu10.04linux内核中,如果我insmod一个运行的模块while(1);在init_module部分,整个系统停止。但是,如果我在Windows7中加载一个sys文件在DriverEntry部分运行while(1);,系统变慢但仍然有效。谁能解释一下为什么两个系统不同内核内部发生了什么?...我认为在第一种情况下(init_module中的无限循环),系统没有理由停止。因为即使我在init_module中制作while(1);,它也在运行在insmod用户应用程序的上下文中。所以流程无限循环必须通过硬件中断信号进行调度。这只是我的看法,如果我错了我想知道细节...

linux - 配置 baretail 以显示网络日志

我正在寻找一个实时更新的日志阅读器。另外,我的日志文件在运行Linux的服务器上,而我在Windows系统上。我找到了BareMetal'sBareTail,我在配置时遇到了困难。我写了一个简单的批处理来执行和打开日志文件,但它不能,这并不奇怪,因为服务器需要一个我不知道如何指定的用户名/密码。我的批处理:::SetPathtoBareTail.exeLocationsetpath=path;"D:\Installs"::SetServerPath&FolderPathsetserver=10.10.10.20setdir=\product\install\logs\startbare

c# - 在C#中使用参数委托(delegate)给其他线程

如何在C#中将带参数的函数委托(delegate)给另一个线程?如果我自己尝试,我会得到这个错误:errorCS0149:Methodnameexpected这是我现在拥有的:delegatevoidBarUpdateDelegate();privatevoidUpdateBar(intValue,intMaximum,ProgressBarBar){if(Bar.InvokeRequired){BarUpdateDelegateDelegation=newBarUpdateDelegate(Value,Maximum,Bar);//errorCS0149:Methodnameexpe

c++ - Windows 线程 sleep 并从另一个线程唤醒

我有一个线程在一个类中运行,我想让自己进入休眠状态,并在另一个线程唤醒它时唤醒,如果可能的话,不传递互斥锁或其他元素,所以它是自包含的。基本上,我已经尝试过在调用WaitForSingleObject两次的线程中使用互斥锁的方法,期望它使互斥锁在第一次调用时不发出信号,但每次函数返回0,因为互斥锁已经发出信号并且线程是互斥锁的所有者,并且仍然是所有者。例如,我希望一旦进入休眠状态,就会调用一个类方法来释放互斥量。在Windows中是否有一个简单的方法来解决这个问题,或者我会被迫打破封装吗?运行 最佳答案 虽然Waitable句柄方法

c++ - CMake 在 Linux 中构建共享对象 .so 文件

任务->运行Cmake在windows中生成dll,在linux中生成共享对象(.so文件)。我正在将代码从Windows移植到Linux。我已对源代码进行了必要的更改。我曾尝试更改CMakeLists.txt文件,但当我尝试这样做时,它会提示“找不到源文件”。请你们指出我在哪里犯了错误。CMakeList.txt如下所示。cmake在Windows中运行良好,但在Linux中它会提示错误。我在CMakeLIsts.txt中评论了几行并添加了行以使其在Linux中工作,但它不起作用。CMAKE_MINIMUM_REQUIRED(VERSION2.8)CMAKE_POLICY(SETCM

c++ - 如何获取我的线程的语言环境名称?

例如,我可以使用_create_locale在我的C程序中设置语言环境因此:localeUS=_create_locale(LC_ALL,"English_UnitedStates.1252");但我需要的是相反的,即为调用线程检索语言环境名称(上面函数的第二个参数)。知道怎么做吗?附言。我知道现代Windows使用LCID。我需要此语言环境名称以与旧代码兼容。 最佳答案 希望您可以使用标准C++。来自std::locale::name:例子#include#include#includeintmain(){std::localel

linux - 删除 shell 脚本中的分支,以便它在 Cygwin 中运行良好

我正在尝试在Cygwin中的Windows上运行shell脚本。我遇到的问题是它在下面的代码部分运行得非常慢。通过一些谷歌搜索,我认为这是由于脚本中有大量的fork()调用,并且由于Windows必须使用Cygwins对此进行仿真,所以它只会变慢。一个典型的场景是在Linux中,脚本将在所以问题是,我怎样才能删除其中的一些fork并仍然让脚本返回相同的输出。我不期待奇迹,但我想将10分钟的等待时间缩短一点。谢谢。check_for_customization(){filename="$1"extended_class_file="$2"grep"extends""$filename"|

c++ - 如何获取当前进程的线程 ID 列表

EnumProcess或CreateToolhelp32Snapshot函数帮助我们获取进程信息,包括进程ID。但是我想知道获取当前进程的线程id列表。DWORDGetMainThreadId(DWORDpId){LPVOIDlpThId;_asm{moveax,fs:[18h]addeax,36mov[lpThId],eax}HANDLEhProcess=OpenProcess(PROCESS_VM_READ,FALSE,pId);if(hProcess==NULL)returnNULL;DWORDtId;if(ReadProcessMemory(hProcess,lpThId,&t

java - Linux和Windows数据系统可以共存吗

计划同时拥有两个系统-Linux(运行Java和数据库posgrsql)和Windows(运行.net应用程序和数据库MSSQL)。Linux和Windows中的应用程序都可以访问驻留在两个数据库系统中的某些数据。那么,两种制度能否共存呢?任何一个应用程序都可以访问和操作数据吗? 最佳答案 从理论上讲,这在很大程度上是可能的。需要考虑的几件事:如果数据以临时方式在不同数据库中复制,那么您将不得不解决保持副本同步的问题。如果您的系统需要读取/更新多个数据库中的数据的事务,那么您将需要使用distributedtransactions这

C 中的跨平台目录路径验证(Linux 和 Windows)

我有一个接受目录路径作为字符串的C函数。该函数在给定路径处创建一个目录。intcreate_directory(constchar*path){//givenpathmaybeabsoluteorrelative//step1:-needtovalidatethegivenpath(crossplatformforbothLinuxandwindows)//whatarethecriteriaforpathvalidation?//step2:-checkpermissionaboutuseraccessibility,meanscannotcreatedirectory,ifpath