标签: beginthread

10
推荐指数
1
解决办法
3025
查看次数

Visual C++ Threads简单示例

我试图通过将函数传递给_beginthread来从main创建一个基本线程.但我的输出没有完成.

我得到以下输出:

Starting thread
48
Main ends
I
Run Code Online (Sandbox Code Playgroud)

有人可以澄清以下代码中的错误吗?

#include <iostream>
#include <process.h>
using namespace std;

void test(void *param)
{
    cout << "In thread function" << endl;
    Sleep(1000); // sleep for 1 second
    cout << "Thread function ends" << endl;
    _endthread();
}


int main()
{
    cout << "Starting thread" << endl;
    cout << _beginthread(test,0,NULL);
    cout << "Main ends" << endl;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c++ multithreading visual-c++ beginthread

6
推荐指数
1
解决办法
6万
查看次数

BeginThread结构 - Delphi

我现在有一个几乎完成的应用程序,我想要实现的下一个功能是线程.我选择使用BeginThread(),虽然我知道delphi中的TThread.我遇到的问题是BeginThread()调用的结构.通常,程序中调用我想要线程化的函数的行是

CompareFiles(form1.Edit3.Text,Form1.Edit4.Text,Form1.StringGrid2,op);
Run Code Online (Sandbox Code Playgroud)

op是一个整数.

我已经将它切换出来以便从中创建一个线程

BeginThread(nil,0,CompareFiles,Addr('form1.Edit3.Text,Form1.Edit4.Text,Form1.StringGrid2,op'),0,x);
Run Code Online (Sandbox Code Playgroud)

从我可以找到的关于如何实际使用BeginThread()的少量信息来看,这应该是一个很好的调用,但是在编译时我得到的是关于我的BeginThread()语句参数的结构的编译器错误.

编辑信息.

调用CompareFiles的当前过程是

procedure TForm1.Panel29Click(Sender: TObject);
var
op,x : integer;

begin
    if (Form1.Edit3.Text <> '') AND (Form1.Edit4.Text <> '') then
        begin
          op := 3;
          if RadioButton7.Checked = True then op := 0;
          if RadioButton3.Checked = True then op := 1;
          if RadioButton4.Checked = True then op := 2;
          if RadioButton5.Checked = True then op := 3;
          if RadioButton6.Checked = True then op := 4;
          CompareFiles(form1.Edit3.Text,Form1.Edit4.Text,Form1.StringGrid2,op);
        end;
end;
Run Code Online (Sandbox Code Playgroud)

如果我按照几个人的建议使用TThread,并且如下面Rob所示,我很困惑a)我将如何将op,Edit3/4.Text和StringGrid2传递给CompareFiles.从TThread的例子猜测我已经看过我以为我会替换上面的代码TCompareFilesThread.Execute并将当前代码从Panel29Click放入TCompareFilesThread.Create然后添加

FEdit3Text := Edit3Text; …
Run Code Online (Sandbox Code Playgroud)

delphi multithreading beginthread

5
推荐指数
1
解决办法
4843
查看次数

Delphi,通过BeginThread传递指针

我正在使用BeginThread创建一个线程.

在我用来启动线程的过程中,我想传递一个指向boolean变量的指针,这样分叉线程和主线程都可以作为控制变量访问它,以便在另一个完成时告诉它.

由于开始线程接受了我试图在Addr(MyPointerVar)中传递的参数的指针,但我收到错误.

但我必须这样跑,所以我今晚无法完成我的想法.但如果有人对此有任何想法我很感激.

delphi pointers beginthread

1
推荐指数
1
解决办法
3077
查看次数

无法使用_beginthreadex编译C++程序

#include <iostream>
#include <Windows.h>
#include <process.h>

//#include "windowstate.cpp"

//DWORD WINAPI MyThreadFunction( LPVOID lpParam );


using namespace std;

int Zeit;

unsigned int __stdcall wfshutdown() {
    Sleep(Zeit*60000);
    system("shutdown -s -t 2");
    return 0;
}


void shutdown() {
    cout << "When I should shut down your PC(in minutes)" << endl;
    cin >> Zeit;
    if(Zeit==0) {
        return;
    }
//  windowstate(0);


    HANDLE hThread;
    DWORD threadID;
    hThread = (HANDLE)_beginthreadex( NULL, 0, &wfshutdown, NULL, 0, &threadID );
}
Run Code Online (Sandbox Code Playgroud)

我无法运行该程序.我收到此错误,我不明白:

错误1错误C2664:'_ beginthreadex':无法将参数3从'unsigned int(__stdcall*)(void)'转换为'unsigned int(__stdcall*)(void*)'32

我在网上搜索了一个多小时未成功找到解决方案,因此我非常希望你能提供帮助.

c++ multithreading beginthread beginthreadex

0
推荐指数
1
解决办法
1666
查看次数