C语言简答题(五)

1.

什么是同步IO和异步IO?

异步文件IO也就是重叠IO。
在同步文件IO中,线程启动一个IO操作然后就立即进入等待状态,直到IO操作完成后才醒来继续执行。而异步文件IO方式中,线程发送一个IO请求到内核,然后继续处理其他的事情,内核完成IO请求后,将会通知线程IO操作完成了。
如果IO请求需要大量时间执行的话,异步文件IO方式可以显著提高效率,因为在线程等待的这段时间内,CPU将会调度其他线程进行执行,如果没有其他线程需要执行的话,这段时间将会浪费掉(可能会调度操作系统的零页线程)。如果IO请求操作很快,用异步IO方式反而还低效,还不如用同步IO方式。
同步IO在同一时刻只允许一个IO操作,也就是说对于同一个文件句柄的IO操作是序列化的,即使使用两个线程也不能同时对同一个文件句柄同时发出读写操作。重叠IO允许一个或多个线程同时发出IO请求。

2.A.c 和B.c两个c文件中使用了两个相同名字的static变量,编译的时候会不会有问题?

在头文件中定义static,然后这个头文件被不同的文件引用。我们知道,static的作用域是定义它的源文件中,这样的方式,会在每个引用它的文件中都生成一个本地的static 变量。static 变量是静态变量,和全局变量一样,都存放在静态存储区,但是,值得注意的是,编译器在编译的时候,对他们的命名是不同的。因此,存放的位置也不同,这时,在头文件中定义的static变量,在不同的文件中引用,就是不同的静态变量。

3.

一个链表不知道头结点,有一个指针指向其中一个结点,请问如何删除这个指针指向的结点。

将这个节点复制成下一个节点的值,然后删除下一个节点 
node *p; // 当前节点
node *q;
q = p -> next;
p.data = q.data; // 复制q节点到p

p -> next = q -> next; // 删除q
free(q);


  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值