gpt4 book ai didi

c - 关于linux中的信号量

转载 作者:太空宇宙 更新时间:2023-11-04 11:22:25 25 4
gpt4 key购买 nike

我有以下代码:

int resource;
sem_t s;

void function2()
{
// do some operation to resource
}


void function1()
{
sem_wait(&s);

function2();

sem_post(&s);
}

如果我们有不同的进程同时调用function1,并且function1已经被semaphore保护了,我们还需要semaphore来保护function2?

最佳答案

您真正需要做的是使用信号量保护您的共享数据。至少这是最佳实践。信号量基本上用于保护可从各种功能访问的数据。典型的用法可能如下所示:

struct data {
yoursharedata;
sem_t lock;
}

每当您(从任何函数)访问您的共享数据时,获取锁,操作数据并释放锁。如下所示:

   sem_wait(lock);
pock(yoursharedata);
sem_post(lock);

希望这会有所帮助!

关于c - 关于linux中的信号量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17316807/

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