c - 关于linux中的信号量

标签 c linux semaphore

我有以下代码:

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/

相关文章:

java - 为什么在使用同步时使用信号量?

real-time - 优先级上限协议(protocol)如何工作

c++ - 从 C0X32.OBJ 引用的未解析的外部 '_main'

c - do-while 循环 scanf 在读取单个字符时读取两次循环而不是一次

c++ - 无法在 make 文件中包含库

linux - 配置代理由于iptables

c - 多线程信号量程序

c - 字符串的快速移动字符

c - 如何检查c代码链表中的可用座位

regex - Linux grep/awk : Filter lines in a file, 但在 EOF 处克隆(保留或省略)尾随换行符