Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 如何在线程之间发送变量/信息_C_Multithreading_Parent - Fatal编程技术网

C 如何在线程之间发送变量/信息

C 如何在线程之间发送变量/信息,c,multithreading,parent,C,Multithreading,Parent,我需要知道一个线程如何在进入等待状态之前将其ID发送给另一个线程。我想传递一个ID为的变量,但我不知道怎么做。如果只有一个线程及其父线程,可以使用全局变量,因为它们在所有线程之间共享。如果您希望并发访问,请将其设置为volatile 编辑:我不确定您是否在Linux上使用POSIX线程,但在创建线程时,您可能有一种方法可以传递指针(例如,指向struct)。它可以包含一个用于存储其ID的变量,也可以包含一个指向要在父线程上调用的函数的指针。我知道您可以使用Windows线程来完成此操作。您可以在

我需要知道一个线程如何在进入等待状态之前将其ID发送给另一个线程。我想传递一个ID为的变量,但我不知道怎么做。

如果只有一个线程及其父线程,可以使用全局变量,因为它们在所有线程之间共享。如果您希望并发访问,请将其设置为volatile


编辑:我不确定您是否在Linux上使用POSIX线程,但在创建线程时,您可能有一种方法可以传递指针(例如,指向
struct
)。它可以包含一个用于存储其ID的变量,也可以包含一个指向要在父线程上调用的函数的指针。我知道您可以使用Windows线程来完成此操作。

您可以在线程中创建一个指针,该指针指向父线程中的函数(通过引用)。当它进入等待状态时,它就可以使用该指针触发指向其父线程的某些内容。

线程共享内存,因此您可以分配一个全局变量,并让子线程对其进行写入


对于同步(也称为通知父线程已写入值),您有很多选择:可以使用信号量,可以将信号从线程发送回父线程,使用如所述的同步变量。

您可以使用管道进行写入和读取(如果我理解您的要求)。如果它是在所有线程之间共享的(并且您无论如何都要使它变得不稳定),那么为什么要限制“一个线程及其父线程?”很抱歉,在您回答后我更新了这个问题。有很多线程和一个主线程(调度程序)。我需要最后一个线程在其他线程进入睡眠之前知道它们的ID。@RobertHarvey如果生成多个线程,则不能使用单个变量,因为生成的第二个线程将覆盖它。当您说“属性”时,您真的指的是指向函数或方法的指针吗?(这是C语言)