我只有有限的c经验,并且几乎没有使用线程的经验。如果有一种简单的方法可以将“ forever”函数包装到线程中并允许main()继续运行,请告诉我该怎么做。这个例子当然是完全不切实际的,但是如果我能使它工作,我认为这是一个很好的起点。也许甚至不可能?但是想知道。谢谢!

//
#include <Windows.h>
#include <stdlib.h>
#include <iostream>
#include <stdio.h>
#include "stdafx.h"

void foreverFunction(); // function prototype

int myNumber=1;

void main()
{

    foreverFunction();   // call forever (looping function), would like get it running as a separate thread so that the code below can continue.
    while (myNumber != 0 ){
        printf("Enter a number (0 to exit): ");
        scanf("%d",&myNumber);
        printf("Entered: %d\n",myNumber);
    }

}


// function below should report the current value of myNumber every second
void foreverFunction(){
while (myNumber>0){
    printf ("\nThis will run until the user enters 0, Last value entered was %d\n",myNumber);
    Sleep(1000);
    }
}

最佳答案

对于像您这样的简单程序,您可以使用beginthread()

_beginthread(foreverfunction, 0, NULL);


第一个参数是函数指针(函数的名称)。第二个是堆栈大小,可以为0。第三个是要提供给函数的参数(更具体地说,是指向该参数的指针)。如果您有多个参数,则必须将它们打包到一个结构中

您可以在Windows中使用的另一个功能是Linux(POSIX)的CreateThread()参见haris答案

关于c - 如何在C中创建一个非常基本的线程函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31938003/

10-11 23:08
查看更多