我只有有限的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/