Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/60.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_Operating System_Blocking - Fatal编程技术网

C 在同步函数中处理阻塞?

C 在同步函数中处理阻塞?,c,operating-system,blocking,C,Operating System,Blocking,我基本上必须为操作系统创建一个简化的设备控制器。我需要创建同步和异步函数,将一个字的数据输入/输出到队列,当“设备”准备就绪时,会发出信号&函数返回。同步功能会自行阻塞,直到设备从队列和信号功能(输出)中删除字,直到满足请求(输入) 我不知道如何处理需要阻塞的同步函数,直到请求得到处理。如何实现阻塞方面?使用pthread锁可以满足我的需要吗 谢谢。如果您在用户空间:是的,请使用pthread互斥体。在使用者上,如果没有可用数据,您将pthread\u mutex\u lock。在produce

我基本上必须为操作系统创建一个简化的设备控制器。我需要创建同步和异步函数,将一个字的数据输入/输出到队列,当“设备”准备就绪时,会发出信号&函数返回。同步功能会自行阻塞,直到设备从队列和信号功能(输出)中删除字,直到满足请求(输入)

我不知道如何处理需要阻塞的同步函数,直到请求得到处理。如何实现阻塞方面?使用pthread锁可以满足我的需要吗


谢谢。

如果您在用户空间:是的,请使用pthread互斥体。在使用者上,如果没有可用数据,您将
pthread\u mutex\u lock
。在producer上,新数据提交到队列后,您将
pthread\u mutex\u unlock

阻塞操作由内核调度程序处理。阻塞I/O类型操作的通用用户空间端是一个条件变量或信号量,但一些标准I/O机制,如
read
write
也直接支持阻塞。