C++常见多线程编程
来源:互联网 发布:慈溪市编程成绩 编辑:程序博客网 时间:2024/06/07 00:22
这些题的解答可以参考另一个链接:
http://blog.csdn.net/chencheng126/article/details/44652533
这篇文章的一些亮点,如:
对多线程的同步和互斥的区别,举得例子很清楚。就是生产者和多个消费者之间的关系。生产者和消费者之间是同步,而多个消费者之间是互斥。
---------------------------------------
一.概念性问答题
第一题:线程的基本概念、线程的基本状态及状态之间的关系?
线程是程序执行流的最小单元。线程的基本状态包括:新线程态、可运行态、阻塞/非运行态、死亡态。
各状态之间的关系如下:
第二题:线程与进程的区别?
线程是指进程内的一个执行单元,也是进程内的可调度实体.与进程的区别:
(1)地址空间:进程内的一个执行单元;进程至少有一个线程;它们共享进程的地址空间;而进程有自己独立的地址空间;
(2)资源拥有:进程是资源分配和拥有的单位,同一个进程内的线程共享进程的资源
(3)线程是处理器调度的基本单位,但进程不是.
4)二者均可并发执行.
第三题:多线程有几种实现方法,都是什么?
多线程有两种实现方法:继承Thread类,实现Runable接口第四题:多线程同步和互斥有几种实现方法,都是什么?
多线程同步有如下几种实现方法:
事件、信号量
多线程互斥有如下几种实现方法:
临界区、事件、信号量、互斥量
第五题:多线程同步和互斥有何异同,在什么情况下分别使用他们?举例说明。
同步是一种特殊的互斥。当访问资源量存在先后的顺序的时候使用同步,当需要独占试访问资源时使用互斥。
如一个生产者和多个消费者之间。生产者和消费者之间是同步关系;消费者之间是互斥关系。
二、选择题
第一题:
以下多线程对int型变量x的操作,哪几个不需要进行同步:D
A. x=y; B. x++; C. ++x; D. x=1;
第二题
多线程中栈与堆是公有的还是私有的: C
A:栈公有, 堆私有
B:栈公有,堆公有
C:栈私有, 堆公有
D:栈私有,堆私有
备注:
一个由C/C++编译的程序占用的内存分为以下几个部分
1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数名,局部变量的名等。其操作方式类似于数据结构中的栈。
2、堆区(heap)— 由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表。
3、全局区(静态区)(static)—全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域, 未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。程序结束后由系统释放。
4、文字常量区—常量字符串就是放在这里的,程序结束后由系统释放 。
5、程序代码区— 存放函数体的二进制代码。
- C++常见多线程编程
- c编程常见错误
- c语言多线程编程
- C#:多线程编程探索
- linux c 多线程编程
- Linux C多线程编程
- C/C++ 多线程编程
- C语言多线程编程
- Linux C 多线程编程
- linux-C编程-多线程
- Linux c 多线程编程
- C多线程编程
- 【C++】:C++多线程编程
- Linux C多线程编程
- C/C++多线程编程
- Linux C 多线程编程
- [Linux C编程]多线程
- C多线程编程-互斥量
- 共享内存+互斥量实现linux进程间通信
- android Activity细节(一) onSaveInstanceState()方法使用注意点
- 第一章
- wxWidget文件路径处理及字符串拆分
- Linux 平台误删 home oracle 根目录的解决方法
- C++常见多线程编程
- NSLayoutConstraint使用
- LeetCode算法题之Remove Duplicates from Sorted Array
- 【转】C#中的Invoke
- 安卓学习笔记--通过ContentProvider读写系统的通讯录
- UILabel详解
- TabHost 和 FragmentTabHost面面观
- KVC&KVO
- HDOJ Bone Collector 2602