【发布时间】:2012-04-13 09:43:42
【问题描述】:
我有使用多线程的代码但是它是通过使用 windows 我想转换 wxwdigets 中的代码我已经尝试了很长时间但没有成功,最终我删除了我所做的并想要开始从头开始
#include "windows.h"
#include <iostream>
#include <stdio.h>
DWORD WINAPI ThreadFn(LPVOID vpParam);
int main() {
using namespace std;
// Create the thread and pass in the function pointer and counter
unsigned int uiCounter = 0;
DWORD qThreadID;
HANDLE hThread = CreateThread(0, 0, ThreadFn, &uiCounter, 0, &qThreadID);
// Loop until the user enters 'q'
char cChar = ' ';
while (cChar != 'q') {
cout << uiCounter << endl;
cChar = (char)getchar();
}
// Close the handle to the thread
CloseHandle(hThread);
return 0;
}
DWORD WINAPI ThreadFn(LPVOID vpParam)
{
unsigned int& uirCounter = *((unsigned int*)vpParam);
// Increment up to the maximum value
while (uirCounter < 0xFFFFFFFF) {
++uirCounter;
}
return 0;
}
【问题讨论】:
-
这里有具体问题吗?
-
是的,我想在 wxwidgets 中执行相同的代码,我确实尝试了一些它一直崩溃的东西,所以我出于沮丧删除了它,我需要从头开始构建所有东西,所以需要建议/可能的答案
-
你明白 wxWidgets 只是一个跨平台的 GUI 工具包吗?如果您的目标是其他平台,则必须找到其他线程选项。例如,OS X 现在提供 GCD,您拥有更底层的 POSIX 标准化线程(在 OS X、BSD、Linux 发行版上 - 需要付出一些努力 - 甚至在 Windows 上),甚至是 C 的新开发++11,其中包括线程设施。
-
我没有针对除 windows 之外的任何其他东西,这些都是一件好事,但是我需要为这些东西使用 wxwidgets 线程。
标签: c++ multithreading winapi thread-safety wxwidgets