如何在c中使用pthread调用函数?

如何在c中使用pthread调用函数?,c,pthreads,C,Pthreads,如何使用pthreads在单独的线程中调用函数 在Java中,答案如下所示: 如何在C中实现这一点?您应该首先创建一个函数,该函数接受void*作为参数,并返回void*。然后创建一个变量来保存线程。然后初始化它,并等待完成工作 下面是一个简单的代码 #include<stdio.h> #include<pthread.h> void* thread_func(void* argument) { printf("My first thread!!!\n"); p

如何使用pthreads在单独的线程中调用函数

在Java中,答案如下所示:


如何在C中实现这一点?

您应该首先创建一个函数,该函数接受void*作为参数,并返回void*。然后创建一个变量来保存线程。然后初始化它,并等待完成工作

下面是一个简单的代码

#include<stdio.h>
#include<pthread.h>

void* thread_func(void* argument) {
  printf("My first thread!!!\n");
  printf("Passes argument: %d\n", *(int*)argument);
  pthread_exit(NULL); // you could also return NULL here to exit no difference
}

int main() {
  pthread_t my_thread;
  int a = 10;
  pthread_create(&my_thread, NULL, thread_func, &a); // no parentheses here 
  pthread_join(my_thread, NULL);

  return 0;
}
只是小心传球,因为这会导致很多问题

如果你有更多的问题,请问

附言。 我找到了这个多线程教程。在C代码中编译的唯一东西是输出,因为教程是用C++编写的,并且使用IoSt流库来输出。所有的线程创建、传递参数等等都在C代码中是完全有效的。

您应该首先创建一个函数,该函数接受void*作为参数,并返回void*。然后创建一个变量来保存线程。然后初始化它,并等待完成工作

下面是一个简单的代码

#include<stdio.h>
#include<pthread.h>

void* thread_func(void* argument) {
  printf("My first thread!!!\n");
  printf("Passes argument: %d\n", *(int*)argument);
  pthread_exit(NULL); // you could also return NULL here to exit no difference
}

int main() {
  pthread_t my_thread;
  int a = 10;
  pthread_create(&my_thread, NULL, thread_func, &a); // no parentheses here 
  pthread_join(my_thread, NULL);

  return 0;
}
只是小心传球,因为这会导致很多问题

如果你有更多的问题,请问

附言。 我找到了这个多线程教程。在C代码中编译的唯一东西是输出,因为教程是用C++编写的,并且使用IoSt流库来输出。所有的线程创建、传递参数等等都在C代码中是完全有效的。
从技术上讲,你不能……至少不能直接

线程是处理器在运行程序时遵循的执行路径。在今天的环境中,有许多多线程的实例。最终用户应用软件通常有不同的线程执行不同的操作。然而,在服务器上,不同的线程正在做相同的事情,即服务于客户端请求。在任何情况下,每个线程都以自己的堆栈帧和处理器状态运行

如果需要将数据传递到另一个要处理的线程,则有两种方法:

1只需创建一个以数据为参数的新线程

2使用工作队列安排

我将使用2,因为根据队列的设置方式,您可以运行多个生产者和消费者

下面是几个关于如何设置的示例:

这里有一个关于pthreads的非常好的教程:


希望这有帮助。

从技术上讲,你不能……至少不能直接

线程是处理器在运行程序时遵循的执行路径。在今天的环境中,有许多多线程的实例。最终用户应用软件通常有不同的线程执行不同的操作。然而,在服务器上,不同的线程正在做相同的事情,即服务于客户端请求。在任何情况下,每个线程都以自己的堆栈帧和处理器状态运行

如果需要将数据传递到另一个要处理的线程,则有两种方法:

1只需创建一个以数据为参数的新线程

2使用工作队列安排

我将使用2,因为根据队列的设置方式,您可以运行多个生产者和消费者

下面是几个关于如何设置的示例:

这里有一个关于pthreads的非常好的教程:


希望这有帮助。

当然可以用C搜索pthread tutorial/example?但它不会返回任何关于这方面的信息!这很有趣,pthread教程c Simple:void a{bmulti,ple,para,meters;}的谷歌最佳答案之一。与POSIX线程的关系是什么?当然可以在C中搜索pthread tutorial/example?但它没有返回任何关于这方面的信息!这很有趣,pthread教程c Simple:void a{bmulti,ple,para,meters;}的谷歌最佳答案之一。与POSIX线程有什么关系?她的问题似乎是关于如何传递参数,所以你可能想明确阐述这一点。我如何从thread_func调用另一个特定于线程的函数?我不明白你想做什么,让另一个线程从同一个函数开始,或者…thread_func只是一个普通的C函数,你可以从那里调用其他函数,就像调用其他函数一样。例如,与上面的示例调用printf的方式相同。@anakin:您没有释放线程堆栈。这意味着每次你用glibc生成一个线程,8Mb的内存就会被泄漏。她的问题似乎是关于如何传递参数的,所以你可能想明确阐述这一点。我如何从thread_func调用另一个特定于线程的函数?我不明白你想做什么,让另一个线程从同一个函数开始,或者…thread_func只是一个普通的C函数,你可以从那里调用其他函数,就像调用其他函数一样。例如,与上面的示例调用printf的方式相同。@anakin:您没有释放线程堆栈。这意味着 ns每次使用glibc生成线程时,都会泄漏8Mb内存。