C++ Win32 Threads
C++ Win32 Threads
我在使用_beginthreadex
时遇到了一些问题。如何将我创建的函数发送到线程?我对线程完全陌生,这太愚蠢了,但我无法处理它
//Function that I want to send to a thread
vector<int>F1(vector<int> A, vector<int> B, vector<int> C, vector<int> D, vector<vector<int>> MA, vector<vector<int>> MD) {
vector<int> ResVect;
ResVect = plusVector(plusVector(A, plusVector(B, C)), VectMultMatr(D, MultMatr(MA, MD)));
return ResVect;
}
//Thread funcF1
int main(){
HANDLE funcF1, funcF2, funcF3;
//////F1//////
cout << "Task 1 starts" << endl;
vector<int>A = createVect(1, 4);
vector<int>B = createVect(1, 4);
vector<int>C = createVect(1, 4);
vector<int>D = createVect(1, 4);
vector<vector<int>>MA = createMatrix(1, 4);
vector<vector<int>>MD = createMatrix(1, 4);
//vector<int>E = F1(A, B, C, D, MA, MD);
funcF1 = (HANDLE)_beginthreadex(0, 0, &F1(A, B, C, D, MA, MD), 0, 0, 0);
}
如果您阅读_beginthreadex
文档,您会发现您传入的函数与_beginthreadex
期望的签名不匹配:
unsigned ( __stdcall *start_address )( void * )
要执行您正在尝试的操作,您需要一个确切签名的函数来包装您的真实函数。
尝试更多类似的东西:
vector<int> F1(vector<int> A, vector<int> B, vector<int> C, vector<int> D, vector<vector<int>> MA, vector<vector<int>> MD) {
return plusVector(plusVector(A, plusVector(B, C)), VectMultMatr(D, MultMatr(MA, MD)));
}
struct myVecs {
vector<int> A;
vector<int> B;
vector<int> C;
vector<int> D;
vector<vector<int>> MA;
vector<vector<int>> MD;
};
unsigned __stdcall myThreadFunc(void *arg) {
myVecs *vecs = (myVecs*) arg;
vector<int> E = F1(vecs->A, vecs->B, vecs->C, vecs->D, vecs->MA, vecs->MD);
// use E as needed...
delete vecs;
return 0;
}
int main(){
HANDLE funcF1;
//////F1//////
cout << "Task 1 starts" << endl;
myVecs *vecs = new myVecs;
vecs->A = createVect(1, 4);
vecs->B = createVect(1, 4);
vecs->C = createVect(1, 4);
vecs->D = createVect(1, 4);
vecs->MA = createMatrix(1, 4);
vecs->MD = createMatrix(1, 4);
funcF1 = (HANDLE) _beginthreadex(0, 0, &myThreadFunc, vecs, 0, 0);
if (func1 == 0) {
// error handling...
delete vecs;
}
// do other things as needed...
// wait for thread to terminate before exiting the app...
return 0;
}
相关文章:
- Win32编译器选项和内存分配
- std::threads可以从Windows DLL中的全局变量创建/销毁吗?
- C++win32 API创建多个类似视口的窗口
- WM_CTLCOLORSTATIC从未在WIN32应用程序中触发
- 检测win32服务创建和删除的最佳方法
- WIN32:C++,为什么在WM_CLOSE上调用Messagebox函数程序正在冻结
- 将 win32 hbitmap 转换为 winrt softwarebitmap
- 使用 WIN32 API (C/C++) 对特定树视图项进行着色
- Alt+Enter 在 Win32 应用中,管理大小调整和分辨率
- VSCode C++ 编译的exe感染了Win32:TrojanX-gen[Trj]
- 从预处理器获取 Windows 版本(C++ Win32)
- Issues with Win32 ReadProcessMemory API
- Win32 发送输入鼠标移动滞后并冻结
- 如何从 Win32 C++ 应用程序输出到父控制台窗口?
- C++线程:如何在一个线程仍在运行时阻止另一个线程执行 (Win32)
- 将 Win32/WinAPI 应用程序移植到 wxWidgets
- Win32 API 控制台光标在 WriteConsole 后不移动
- C++ Win32 Threads
- C++ win32 如何使密码字段可选并启用复制和粘贴?
- LNK1104:无法打开libpjproject-i386-Win32-vc14-Debug-Static.lib