草庐IT

pthreads-win32

全部标签

c++ - 在 QT for Windows 中使用 Win32 API

我正在从.netC#迁移到QTC++,我正在尝试使用此Win32函数在QT中模拟驱动器:[DllImport("kernel32.dll",CharSet=CharSet.Auto,SetLastError=true)]privatestaticexternboolDefineDosDevice(intflags,stringdevname,stringpath);[DllImport("kernel32.dll",CharSet=CharSet.Auto,SetLastError=true)]privatestaticexternintQueryDosDevice(stringdev

c++ - 强制转换为 void* 以将对象传递给 C++ 中的 pthread

我对如何将对象传递给pthread_create函数有些困惑。我发现了很多关于转换为void*、将参数传递给pthread_create等的零碎信息,但没有任何内容将它们联系在一起。我只是想确保我已经把它们绑在一起并且没有做任何愚蠢的事情。假设我有以下线程类:编辑:修复了不匹配的static_cast。classProducerThread{pthread_tthread;pthread_attr_tthread_attr;ProducerThread(constProducerThread&x);ProducerThread&operator=(constProducerThread

c++ - 我必须分离或加入 pthread 吗?

pthread_detach()文档说:Thepthread_detach()functionshallindicatetotheimplementationthatstorageforthethreadthreadcanbereclaimedwhenthatthreadterminates.如果我创建了一个可连接的线程但不分离或连接它,会有什么后果?该线程的资源不会被回收? 最佳答案 你回答了你自己的问题?线程需要系统中的某些资源。这些将被保留,直到线程被加入,或者它被分离并终止。(在您分离线程之前,系统必须假设您将在未来的某个时

c++ - pthreads 中的内存模型规范

使用pthread是否可以保证一个线程中的内存写入何时在其他线程中可见?与Java相比,Java语言规范有一个sectionthatspecifiestheinteractionoflocksandmemory这使得编写可移植的多线程Java代码成为可能。是否有相应的pthreads规范?当然,您总是可以让共享数据变得不稳定,但这不是我想要的。如果这取决于平台,是否有事实上的标准?还是应该使用另一个线程库? 最佳答案 POSIX在4.11MemorySynchronization中指定内存模型:Applicationsshallen

c++ - 如何在 C++ 中获取具有给定位模式(如 int32_t)的 float ?

我需要一种快速获取float的方法具有给定的位模式(提供为int32_t)。当然,编译器应该优化整个结构。简单转换执行强制转换和reinterpret_cast不允许... 最佳答案 编译器会优化它是不可靠的,但它避免了UB,前提是提供的值确实是float的表示(也就是说,它的大小正确并且它的位模式不包含陷阱表示float)。GCC至少有时能够优化它:floatconvert(int32_tinputvalue){floatf;std::memcpy(&f,&inputvalue,sizeof(f));returnf;}如果优化是问

c++ - 在 Win32 应用程序中添加状态栏

我想为我的Win32应用程序添加一个状态栏。我发现我可以使用CreateStatusWindow函数。在重新调整窗口大小之前,我工作正常。查看我的代码块的一部分:BOOLInitInstance(HINSTANCEhInstance,intnCmdShow){HWNDhWnd;hInst=hInstance;//StoreinstancehandleinourglobalvariablehWnd=CreateWindow(szWindowClass,szTitle,WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,0,CW_USEDEFAULT,0,NULL,NULL

c++ - 如何从 C++ 中的 pthread 返回 double 值?

阅读此主题后:HowtoreturnavaluefromthreadinC关于如何从pthread返回整数值我测试过它是否可以用于double,但它没有。有没有办法像原始线程中描述的那样从pthread进程返回double、长整数或字符串,而不是返回整数42?如果是怎么办?如果我有一个包含10个位置的静态数组和10个pthread每次修改不同的位置,我会遇到麻烦吗?一个例子就像“线程0只修改数组[0],线程1只修改数组[1]等等”。 最佳答案 线程只需为您希望它返回的结果动态分配内存:void*myThread(void*){dou

如何将未签名的16和未签名的32位整数编码为未签名的8位内存数组?

我知道如何进行一点转移,但是我的价值似乎从边缘流行,我失去了原始价值,以换取保留8位。看答案对于未签名的16位整数:unsignedshortval16=0x1234;unsignedcharenc[2];enc[0]=val16&0xff;//stores0x34toenc[0]enc[1]=val16>>8&0xff;//stores0x12toenc[1]对于未签名的32位整数:unsignedintval32=0x12345678;unsignedcharenc[4];enc[0]=val32&0xff;//stores0x78toenc[0]enc[1]=val32>>8&0xff;

c++ - 是否需要分离 pthread 以防止内存泄漏?

在我的程序中,我处理新线程pthread_tthread;pthread_create(&thread,NULL,c->someFunction,(void*)fd);//wherefdisIDofthethread问题很简单-如果我只是让someFunction完成,是否需要在C++中调用一些东西,例如join或其他任何东西,以防止内存泄漏或内存是否自动释放?? 最佳答案 来自opengrouppageforpthread_join,Thepthread_join()functionprovidesasimplemechanism

c++ - 64 位类型和操作如何在 32 位体系结构的最低级别上实现?

像int64_t这样的类型是如何在最低的即汇编级别上实现的?我使用的是32位机器,但仍然可以使用int64_t例如。我最初的假设是64位只是模拟的,因此与在32位机器上使用32位数据类型相比,使用这些类型进行计算肯定会有相当多的开销。在此先感谢您和问候 最佳答案 你是对的,当你为32位架构编译代码时,你必须模拟64位操作数和使用32位操作数的操作。一个8字节变量(uint64_t,它只是longlong的类型定义)存储在2个4字节寄存器中。对于加法(和减法),您必须先加低4个字节,然后再执行第二次加法带进位(或减法带借位)高4个字节