文档章节

C++多线程编程<一>之常见面试问题

moki_oschina
 moki_oschina
发布于 2013/12/30 17:16
字数 815
阅读 866
收藏 1

一.概念性问答题    

    第一题:线程的基本概念、线程的基本状态及状态之间的关系?    

线程是程序执行流的最小单元。线程的基本状态包括:新线程态、可运行态、阻塞/非运行态、死亡态。

各状态之间的关系如下:

    第二题:线程与进程的区别?    

线程是指进程内的一个执行单元,也是进程内的可调度实体.
与进程的区别:
(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、程序代码区— 存放函数体的二进制代码。

 

本文转载自:http://blog.csdn.net/morewindows/article/details/7392749

共有 人打赏支持
moki_oschina
粉丝 25
博文 202
码字总数 44864
作品 0
成都
程序员
私信 提问
C++雾中风景12:聊聊C++中的Mutex,以及拯救生产力的Boost

笔者近期在工作之中编程实现一个Cache结构的封装,需要使用到C++之中的互斥量Mutex,于是花了一些时间进行了调研。(结果对C++标准库很是绝望....)最终还是通过利用了Boost库的shared_mute...

LeeHappen
2018/10/06
0
0
从“成都-go-戒炸鸡”的面试题开始说起

版权声明:欢迎关注我的微信公众号:「easyserverdev」,中文名:『高性能服务器开发』。 https://blog.csdn.net/analogous_love/article/details/84207246 今天晚上“高性能服务器开发”QQ群...

analogous_love
2018/11/19
0
0
是技术太次,还是要得太高。面试屡屡失败!

先来个背景介绍。 本人计算机科学与技术专业,C++方向,2013年毕业。非211,非985,但是在学校期间主攻技术,基础和知识面还是不错的。从C、C++、C#、java、php、Qt都有接触,数据库、多线程...

changnet
2015/04/25
2.6K
16
北京国翔辰瑞科技有限公司招聘

北京国翔辰瑞科技有限公司 简介: 公司秉承“诚信求生存,创新求发展”的经营管理理念,为军队军工单位及政府、企业提供信息化产品和解决方案。公司以满足客户个性化需求为己任,以定制开发为...

dchg2000
2012/03/14
375
1
OSChina 第39期有奖高手问答:Linux 多线程服务端编程

OSCHINA 本期高手问答(8月7日-8月13日)我们请来了 @ChenShuo 为大家解答关于 Linux 多线程服务端编程方面:使用muduo C++网络库的问题。 @ChenShuo 陈硕,擅长C++ 多线程网络编程和实时分布式...

红薯
2013/08/07
14.3K
80

没有更多内容

加载失败,请刷新页面

加载更多

CentOS7 yum 安装git

CentOS7 yum 安装git 1.查看系统是否已经安装git 1 git --version 2.CentOS7 yum 安装git 1 yum install -y git 3.安装成功 4.卸载git 1 yum remove git  ...

linjin200
36分钟前
1
0
vue页面闪现源码的处理方法

1.添加样式 <style type="text/css"> [v-cloak] { display: none; } </style> 2.在app id上添加v-cloak指令 <div class="wrapper wrapper-content " id="app" v-cloak>......

qiang123
40分钟前
2
0
Hyperledger Fabric 实战(十二): Fabric 源码本地调试

借助开发网络调试 fabric 源码本地调试 准备工作 IDE Goland Go 1.9.7 fabric-samples 模块 chaincode-docker-devmode fabric 源码 步骤 添加本地域名 127.0.0.1 peer 127.0.0.1 orderer 用 ...

Jonluo
41分钟前
1
0
自然语言处理hanlp的入门基础

此文整理的基础是建立在hanlp较早版本的基础上的,虽然hanlp的最新1.7版本已经发布,但对于入门来说差别不大!分享一篇比较早的“旧文”给需要的朋友! 安装HanLP HanLP将数据与程序分离,给...

左手的倒影
43分钟前
1
0
KaliLinuxNetHunter教程实施刷机解锁Bootloader

KaliLinuxNetHunter教程实施刷机解锁Bootloader 当用户将前面的工作都准备完成后,即可开始刷机。其中,整个刷机过程分为三个步骤,分别是解锁Bootloader、刷入第三方Recovery和实施刷机。为...

大学霸
44分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部