gpt4 book ai didi

c - 将指针附加到 pthread

转载 作者:行者123 更新时间:2023-11-30 16:18:46 25 4
gpt4 key购买 nike

在我的程序中,我有一个名为 clock_thread 的结构。这对于我的线程系统至关重要。它基本上是一个线程,以恒定的速率执行操作。

有时一些功能需要与 clock_thread 同步,但为此,他们需要当前的 clock_thread 。我无法通过clock_thread论据。我知道我可以获得当前的pthread通过pthread_self() ,但我需要以某种方式附加一个指向 pthread 的指针它指向clock_thread结构。

我目前知道实现这一点的唯一方法是拥有一个全局数组来跟踪所有 clock_thread s,并在需要时比较 pthread每个clock_thread与当前的 pthreadpthread_equal

例如,clock_thread不断调用方法 do_stuff() ,理论上它可以做任何事情。 clock_thread的唯一目的然后调用该函数,它与该函数的功能无关。那么这个函数可能会调用perform_write ,需要改变另一个clock_thread的状态。所以它需要知道当前的clock_thread但是do_stuff()不需要传递当前的clock_thread一直贯穿其逻辑。在实函数中do_stuff代码要复杂得多,并且由于风格选择,我无法通过当前的 clock_thread作为一个论点。

struct clock_thread memory_thread;

void perform_read(uint16_t addr, uint16_t value) {
//Needs to sync with other thread
//But how
clock_thread_sync(???, memory_thread);
}

void do_stuff() {
//Do some stuff
perform_write(addr, 0x1234);
}

有没有更好的方法来实现这一点?我想尽可能避免全局变量。

最佳答案

我解决了这个问题,因为 do_something() 函数知道它位于哪个线程(它有一个指针指向的另一个结构)。 perform_read() 现在将当前 clock_thread 作为参数

关于c - 将指针附加到 pthread,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55808177/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com