1、清华大学出版社的:跟我学 C程序设计;但书中错误不少,错误多这个特点是国内写的书的主要特点。 2、C和指针(美)。 3、C Primer Plus(第五版)中文版。 4、C程序设计语言(第2版•新版)
并发是指多个线程同时运行,比如windows就是并发的 *** 作系统。
并发以后就可以,一边听歌,一边浏览网页。即,看起来像同一时间可以干多个事情。
同步,就是一种控制策略。
就比如说,用迅雷看**。一边下载,一边播放。这个时候下载进程和播放进程,他们两个就有同步的机制,例如:只能播放视频文件中已经下载完成的部分,没有下载的不能播放。并且,如果已经下载的全部播放完了,那播放器就要等待,等到有内容的时候再继续播放。
并发怎么写:首先要把任务拆分成多个能独立执行的部分。例如:下载部分,播放部分。
然后控制好并行部分的运行机制。
#include <stdioh>
#include <timeh>int main()
{
clock_t t = clock();
/这里放入要测试速度的代码/
printf("运行时间%4f秒\n", (double)(clock() - t) / CLOCKS_PER_SEC);
return 0;
}
一、判断题(正确用T表示,错误用F表示,共5题,每题2分,共10分)
1.在多道程序系统中,只有相关的并发进程才有可能存在通信问题。A
A T
B F
2.并发问题是多处理机系统主要关注的焦点,而对但处理机系统无任何影响。B
A T
B F
3 在消息传递通信机制中,只有消息的接收者才能采用阻塞方式进行通信。B
A T
B
F
4.进程之间的直接制约关系可以归结为共享数据与交换数据。A
A T
B
F
5.消息传递通信机制提供了同步和通信功能,这些都是相互交互的进程间必须的。A
A T
B F
二、单项选择题(共10题,每题4分,共40分)
1.进程通信,是指___C__之间交换信息。
A 程序
B 模块
C 进程
D 线程
2.信箱通信是一种___B__通信方式。
A 直接
B 间接
C 低级
D
信号量
3.进程间通信是协调解决多个进程之间的约束关系,实现进程共同进展的关键技术,是多道系统中控制进程___D__执行必不可少的机制。
A 动态
B 并行
C 异步
D 并发
4.下述哪一个选项体现了原语的主要特点_A___。
A 不可分割性
B 并发性
C
共享性
D
异步性
5.缓冲区属于__B___。
A
高级通信
B 低级通信
C 直接通信
D 间接通信
6.消息传递系统中,进程间的数据交换以消息为单位,用户直接利用系统提供的一组__C___来实现通信。
A 程序
B 线程
C
原语(通信命令)
D
7.管道通信中,管道由OS核心的缓冲区来实现,信息传递的方向是__A___的。
A 单向
B
双向
C 既可单向也可双向
D
不确定
8.要进行管道通信,首先建立需要通信的___D__,然后在它们之间建立一个通信管道。
A 程序
B
进程
C 信箱
D 管道
9.缓冲区通信是一种___C__通信方式。
A 直接通信
B 间接通信
C
低级通信
D
信号量
10.引入缓冲的主要目的是__C___。
A
节省内存
B 提高CPU的利用率
C 改善CPU和I/O设备之间速度不匹配的情况
D 提高I/O设备的效率
三、填空题(共5题,每题4分,共20分)
1.进程通信分低级通信和高级通信。将只能传递状态和控制信息的通信称为_____,而将进程间交换较多信息的通信称为_____。
答:低级通信,高级通信
2.进程间通信方式包括直接通信方式和间接通信方式。其中,_____借助于收发双方进程之外的共享数据结构作为通信中转。
答:信箱通信
3.进程间通信的类型可分为共享存储器通信、____通信以及____通信等三大类。
答:消息传递,管道
4.为了使诸进程间能协调地进行通信,必须对进程通信的_____双方进行进程同步。
答:收、发
5.管道通信中的管道是一条在进程间以_____传送的通信通道。
答:字节流方式
四、 简答题(共3题,每题10分,共30分)
1.什么是进程通信?
答:进程通信是指两个并行进程可以通过互相发送消息进行合作,消息是通过消息缓冲而在进程之间相互传递的。
2.试比较进程间的低级与高级通信工具?
答:用户用低级通信工具实现进程通信很不方便,效率低,通信对用户不透明,所有 *** 作都必须由程序员来实现,而高级通信工具弥补了这些缺陷,用户直接利用 *** 作系统提供的一组通信命令,高效地传送大量的数据。
3.进程通信的类型有哪几种?它们分别适合于何种场合?
答:共享存储器:在内存种分配一片空间作为共享存储区。需要进行通信的进程把它附加到自己的地址空间中,不需要时则把它取消。 管道文件:它是连接两个命令的一个打开文件。一个命令向该文件中写入数据,为写者;另一个命令从该文件中读出数据,为读者。 消息传递:它以消息为单位在进程间进行数据交换。
这个一般不能做到。
一般的C语言编译器会限制程序的资源使用量(如CPU不超过40%),超过设定时,编译出来的程序会提示“未响应”而停止工作,不会造成电脑满负荷工作的情况。
实现满负荷工作可以用一些拷机软件,比如Super PI,来测试处理器的性能。
但对于时间的记录,可以运用<timeh>的函数来实现,用法如下:
time_t start,end;start =time(NULL);//or time(&start);
//计时中
end =time(NULL);
printf("time=%d\n",difftime(end,start));
这里的输出单位为秒。如要精确到毫秒的计时,可以调用clock():
clock_t start,end;start = clock();
//计时中
end = clock();
printf("time=%f\n",(double)end-start)/CLK_TCK);
这里end和start得到的是计算机时钟的tick数,换算成毫秒需要除以常数CLK_TCK,换算成秒除以常数CLK_TCKCLOCKS_PER_SEC。
以上就是关于请问推荐一些c语言并发编程的书籍全部的内容,包括:请问推荐一些c语言并发编程的书籍、linux c 多线程并发中并发具体是什么意思,并发和同步什么关系,代码怎样写才算并发、编写一个C语言的小程序,如何测试它的运行速度等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)