草庐IT

同步异步

全部标签

c++ - I/O 完成端口的异步操作返回 0 字节传输

使用I/O完成端口的异步操作返回0字节传输,尽管I/O操作按预期工作(我的读取缓冲区已满)。BYTEbuffer[1024]={0};OVERLAPPEDo={0};HANDLEfile=CreateFile(_T("hello.txt"),GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_EXISTING,FILE_FLAG_OVERLAPPED,NULL);HANDLEcompletion_port=CreateIoCompletionPort(file,NULL,0,0);ReadFile(file,buffer,1024,NULL,&o);在工作线程

windows - 如何在同一个存储库中保持两个文件同步?

我在git中的存储库如下所示:-ProjectRepo-SubFolder1-File1-FileA-SubFolder2-SubSubFolder-File2-FileB文件1和文件2是精确的副本,而不是手动同步它们,我想用git自动同步。同时文件A和B不一样,我不希望它们同步。是否可以在git中保持文件同步? 最佳答案 希望符号链接(symboliclink)就是您所需要的。如果您在Linux/Unix中,您将按如下方式发出符号链接(symboliclink)创建命令:cd".../ProjectRepo/SubFolder2/

c++ - 异步停止 Windows 服务

我正在尝试控制应用程序中的服务。通过StartService(MSDN)启动服务工作正常,服务需要大约10秒才能启动,但在调用StartService后它立即将控制权交还给主应用程序。但是,当通过ControlService(MSDN)停止服务时-据我所知,没有StopService-它会在整个时间内阻塞主应用程序,直到服务停止,这大约需要10秒。Start:StartServiceW(handle,0,NULL)Stop:ControlService(handle,SERVICE_CONTROL_STOP,status)是否有非阻塞/异步停止Windows服务的方法?

windows - Windows 8.1 的什么功能使 Visual Studio 任务窗口包含有关异步操作的详细信息?

VisualStudio2013的一项新功能是任务窗口包含所有挂起的异步任务。在介绍blog,S.Somasegar说,由于操作系统的变化,这只适用于Windows8.1。WithalloftheworkwedidforC#andVisualBasicin.NET4.5andVisualStudio2012toenablemoreproductiveasynchronousprogramming,I’mparticularlyexcitedaboutimprovementswe’vemadeinthisreleasetosupportasyncdebugging(youneedtobe

windows - 如何在 CreateEvent 的 SDDL 字符串中添加同步权

我的Windows服务使用CreateEvent创建了2个事件,用于与用户应用程序通信。该服务和用户应用程序未在同一用户帐户下运行。用户应用程序打开事件并将其设置为无错误地发出信号。但是该服务永远不会收到该事件。另一个事件以相反的方向起作用。所以我认为事件没有正确同步。服务:SECURITY_ATTRIBUTESsecurity;ZeroMemory(&security,sizeof(security));security.nLength=sizeof(security);ConvertStringSecurityDescriptorToSecurityDescriptor(L"D:P

c++ - 使用异步 I/O 和 IOCP 实现回声服务器的最佳方法是什么?

众所周知,回显服务器是从套接字读取数据并将该数据写入另一个套接字的服务器。由于WindowsI/OCompletion端口为您提供了不同的处理方式,我想知道实现回显服务器的最佳方式(最有效)是什么。我肯定会找到一个测试过我将在这里描述的方法的人,并且可以贡献他/她的贡献。我的类(class)是Stream它抽象了一个套接字、命名管道或其他任何东西,以及IoRequest它抽象了OVERLAPPED结构和内存缓冲区来做I/O(当然,适合读和写)。这样当我分配一个IoRequest我只是为数据+OVERLAPPED的内存缓冲区分配内存一枪搞定,所以我调用malloc()只有一次。除此之外,

C++:从哪里获得不使用垂直同步的帧速率限制器?

这似乎是程序员之间的一个巨大secret,没有人愿意为此分享他们的代码。为什么?我找不到可以在不使用垂直同步的情况下将FPS至少限制为60的有效FPS限制器。当然,我希望以正确的方式进行。所以我还没有自己制作,因为他们都说他们花了一年时间才学会fps限制器的所有技巧...编辑:这是我的fps限制器代码,它并不完美,但它是我能做的最好的,但它仍然令人泪目:timeBeginPeriod(1);frame_start_time=TimerGetTime();while(!done){if(PeekMessage(&msg,NULL,0,0,PM_REMOVE)){if(msg.messag

c++ - 使用 MSVC 并发异步写入文件?

目前我正在使用单线程和fseek/fwrite循环将数据保存到一个大文件中。但当然,节省是瓶颈。为了消除这个瓶颈,我想我可以为异步文件写入创建一个线程,但这会阻止下一个迭代线程中的文件访问。有什么方法可以在VisualC/C++中并发异步写入文件吗?(操作系统是Windows) 最佳答案 使用函数:CreateFileMappinghttp://msdn.microsoft.com/en-us/library/windows/desktop/aa366537(v=vs.85).aspx内存将输出文件映射到内存,然后您可以让多个线程同

c++ - 异步输入输出/获取前缀后的输入

我正在寻找一个在输入之前打印字符串的函数。我知道这可以通过printf和gets实现,但我希望字符串保留在给出输入的最后一行。输出在主线程中处理,输入在主线程启动的另一个线程中处理。例如这是当前的控制台窗口(我输入了stop-command,'>'是前缀字符串):[12:00:00]Startingserver...>stop当控制台输出换行的时候,我希望输入一直在最后一行,像这样:[12:00:00]Startingserver...[12:00:01]Serverstarted>stop我正在使用支持Win32和VCL的EmbarcaderoC++BuilderXE2。编辑:我目前

c++ - 如何使用C++同步两台计算机的时钟

我有两台计算机,分别是A和B。我需要确保它们彼此准确同步(在ms的范围内)。一台电脑是windowsbase,另一台是linux。它们通过以太网直接相互连接(一台计算机的电缆连接到另一台计算机)。我可以为它们中的每一个编写C/C++代码。我怎样才能使它们彼此同步y注意到Windows和Linux都不是实时系统,因此您不知道通过以太网发送的数据包需要多长时间才能被另一方接收,因此您无法弥补。由于您需要ms的精度,因此此延迟很重要。有什么算法可以做到这一点吗?windows/Linux中有没有什么函数可以确保当你通过以太网发送数据时,它会立即传递给另一端? 最佳