首页 > 解决方案 > 使用来自多个文件的信号量 C-Windows

问题描述

我想在 Windows 中使用 C 将信号量用于“消费者-生产者”问题。在文件(afile.c)中,我全局声明了信号量的句柄:

HANDLE empty;

在同一个文件 (afile.c) 的其中一个函数中,我创建了信号量:

empty = CreateSemaphore(NULL,size, size, NULL);

并在某些功能中使用它。完成使用后,我使用:

ReleaseSemaphore(empty,1,NULL);

我想在另一个文件(bfile.c)中使用这个信号量,所以我将(afile.h)包含在(bfile.c)中

#include "afile.h"

bfile.c 无法识别此信号量。

有什么解决这个问题的建议,或者,帮助理解如何使用来自多个文件的信号量?

标签: cwindowssemaphore

解决方案


在 afile.c 你应该有:

HANDLE empty = INVALID_HANDLE_VALUE;

在 afile.h 你应该有:

extern HANDLE empty;

推荐阅读