草庐IT

c++ - Windows 最低级套接字编程?

我对winsock有多低级有点困惑?我想在Windows上编写一个非常基本的客户端-服务器程序。我真的不想使用臃肿的TCP甚至UDP,只是一些非常基本和低延迟的东西。winsock会是这个的理想选择吗?或者winsock是否与windows网络功能相同,只是全部打包(并且可能更慢)?在nativeWindows网络功能上使用PInvoke会更好吗? 最佳答案 Winsock、TCP、UDP和任何建立在这些之上的广受欢迎的网络库都将在性能方面具有可比性。使用最简单的方法来完成您的工作。 关

c++ - 在调用仿函数时删除它是否安全?

假设我有以下代码:typedefstd::functionfunc_type;voidsome_func(){//Irrelevantstuffhere.Mighttakesometime...}DWORDWINAPIthread_proc(LPVOIDlpParameter){func_type&func=*static_cast(lpParameter);func();return0;}intmain(){HANDLEhandle;{std::functionmy_func(some_func);handle=::CreateThread(NULL,0,&thread_proc,&

c++ - 惰性初始化缓存...如何使其成为线程安全的?

这就是我所拥有的:Windows服务C#多线程服务使用读写锁(一次多次读取,写入会阻塞其他读/写线程)一个简单的、自写的数据库C++足够小以适合内存足够大,不想在启动时加载它(例如10GB)读取性能非常重要写作不太重要树状结构树节点中的信息存储在文件中为了更快的性能,文件仅在第一次使用和缓存时加载延迟初始化以加快数据库启动速度由于数据库会非常频繁地访问这些节点信息(每秒几千次),而且我不经常写,所以我想使用某种双重检查锁定模式。我知道这里有很多关于双重检查锁定模式的问题,但似乎有很多不同的意见,所以我不知道什么是最适合我的情况。你会用我的设置做什么?这是一个例子:一棵有100万个节点的

c++ - 如何创建一个新线程并在一段时间后终止它?

交易是:我想创建一个线程,其工作方式类似于在Windows中执行一个新的.exe,因此如果该程序(新线程)崩溃或进入无限循环:它将被优雅地杀死(超过时间限制后或当它崩溃)并正确释放所有资源。当该线程成功时,我希望能够修改一些全局变量,其中可能包含一些数据,例如文件列表。这就是为什么我不能只从Windows执行外部可执行文件的原因,因为我无法访问在新线程中执行的函数内的变量。编辑:进一步阐明了问题。 最佳答案 调用CreateThread后线程已经运行。WaitForSingleObject不是必需的(除非你真的想等待线程完成);但它

c++ - CreateMutex 和 OpenMutex 返回 NULL

我正在编写一个具有共享内存的应用程序,并正在创建名称上带有适当"Local\"前缀的命名互斥体。但是,每次我调用CreateMutex函数来创建句柄时,我都会得到一个NULL返回值。我什至尝试在那之后调用OpenMutex并获得NULL返回。GetLastError()函数返回6,这意味着ERROR_INVALID_HANDLE。我相信这发生在第一次尝试在任何进程中创建这个命名互斥锁时。我在包含一些MFC组件之后包含了windows.h,并在应用程序的其他地方使用了CMutex;所以我不知道这是否是一个问题。我始终为前两个参数传递NULL和FALSE,并且我使用的是WindowsXP。

c++ - Windows 控制台颜色值是否有与之关联的官方名称(常量)?

通常颜色是通过它们的十六进制关联来调用的,但是在代码中是否可以通过Windows控制台API中构建的一些常量来调用这些颜色?这是我在搜索时找到的颜色名称:https://stackoverflow.com/a/7138277/393087颜色代码:7=>default0=>black1=>blue2=>green3=>aqua4=>red5=>purple6=>yellow7=>lightgray8=>gray9=>lightblueA=>lightgreenB=>lightaquaC=>lightredD=>lightpurpleE=>lightyellowF=>white这些名字是

c++ - 用于 makefie 构建的 C++ 程序的图形化免费调试器 (Windows XP)

我开发的软件使用命令行生成文件。我的环境尽可能使用免费工具。如果您要问我使用的是哪个版本的make,我很难具体说明,因为我已经安装了mingw、cygwin和dev-cpp。但是,我确实知道它是“免费的”,而不是Microsoft的,而目前我路径上的那个来自dev-cpp目录。无论如何,这不是这个问题的症结所在。我的代码从SCM中提取、构建,最后将exe放在bin目录中。我想要一个可以调试这个exe的免费全屏图形调试器。我不是在寻找IDE,但也许答案需要安装IDE。我绝对不会考虑从命令行makefile转移到IDE等价物。我已经用MSVC尝试过这个,我可以通过在进程启动后附加到进程来做

c++ - 如何在 Windows 上编译 libevent2?

我正在尝试编译thislibevent2package到Windows,但目前我不能,因为配置脚本是一个shell脚本(/bin/sh;不能在Windows中运行)。有什么方法可以编译它或获得预编译包吗?我目前安装了MinGW、CMake和MSC++。编辑:我已经成功地使用nmakeMakefile.nmake编译了libevent2,但它没有生成任何Windows二进制文件/库。只有.lib。makefile如下——#WATCHOUT!Thismakefileisaworkinprogress.Itisprobablymissing#tonsofimportantthings.DON

c++ - 是否有不需要 C++ 运行时的 SQLite C# 库?

在工作中,我们一直在将我们的小型应用程序数据库迁移到SQLite,但遇到了一个问题,即安装我们程序的一位用户没有C++运行时。我们正在使用System.Data.SQLite,显然该程序因此无法运行。我的同事说过,对于我们实现的任何库或系统,“如果它需要C++运行时,那么使用其他东西。”它会导致很多问题。我知道SQLite是用C++编写的,但是是否有任何一种不是用C++编写的实现?是否有不需要Windows中的C++运行时的实现? 最佳答案 C#-SQLite是SQLite软件库版本3.7.7.1的独立重新实现。它已被移植到用C#编

c++ - 在 Windows 操作系统上使用 C++ 开发 iPad/iPhone 应用程序

将用C++编写的完成的游戏项目移植到iPad的最快方法是什么。有没有不买Mac的好方法? 最佳答案 Marmalade(以前称为AirplaySDK)是一个非常适合游戏的跨平台SDK。您可以用VisualC++编写代码,然后在Windows的模拟器中运行它。使用PC,您将无法在iPhone上运行时调试(步进、断点等)您的游戏。部署到iPhone进行测试(从Windows)似乎相当tedious,与XCode的处理方式相比。如果您需要使用Marmalade不支持的iOSnativeAPI功能,您可以使用EDK(扩展开发工具包)为它们构