侧边栏壁纸
博主头像
noerror

虚灵不寐,众理具而万事出。

  • 累计撰写 239 篇文章
  • 累计创建 9 个标签
  • 累计收到 2 条评论
标签搜索

目 录CONTENT

文章目录

flockfile函数用法详解

noerror
2022-10-04 / 0 评论 / 0 点赞 / 204 阅读 / 545 字 / 正在检测是否收录...

flockfile函数用法详解

flockfile函数简介

  • 头文件包含
#include <stdio.h>
  • 函数定义
void flockfile(FILE * filehandle );
int ftrylockfile(FILE * filehandle );
void funlockfile(FILE * filehandle );

flockfile函数常见使用错误

  • 编译错误
    warning: implicit declaration of function ‘flockfile’ [-Wimplicit-function-declaration]
    解决办法:包含头文件
#include <stdio.h>

flockfile函数详细描述

stdio函数是线程安全的。这是通过为每个FILE对象分配一个lockcount和(如果lockcount为非零)一个所属线程来实现的。对于每个库调用,这些函数都要等到FILE对象不再被另一个线程锁定,然后锁定它,执行请求的I/O,并再次解锁对象。
(注意:此锁定与像flock (2)和lockf (3))这样的函数所做的文件锁定无关。)
所有这些对于C-程序员来说都是看不见的,但是希望更详细的控制可能有两个原因。一方面,一个线程的一系列I/O操作可能属于一起,不应该被其他线程的I/O打断。另一方面,为了提高效率,也许应该避免锁定开销。
为此,线程可以显式锁定FILE对象,然后执行其一系列I/O操作,然后解锁。这可以防止其他线程进入中间。如果这样做的原因是为了获得更高的效率,那么使用stdio函数的非锁定版本进行I/O:使用getc_unlocked (3)和putc_unlocked (3)而不是getc (3)和putc (3)
flockfile ()函数等待filehandle不再被另一个线程锁定,然后使filehandle 成为当前线程的所有者,并增加lockcount。
funlockfile ()函数减少锁计数。
ftrylockfile ()函数是flockfile ()的非阻塞版本,它在其他线程拥有*filehandle 的情况下不执行任何操作,否则它获得所有权并增加锁计数。

flockfile函数返回值

ftrylockfile ()函数返回零表示成功(锁已获得),非零表示失败。

flockfile函数错误码

一个都没有。

0

评论区