社区
Linux/Unix社区
帖子详情
求高手,google 面试题,多线程,mutex
rzphenix
2008-05-15 12:00:14
有四个线程1,2,3,4,线程1的功能就是输出1,线程2的功能就是输出2,以此类推.........
现在有四个文件.ABCD.初始都为空.
现要让四个文件呈如下格式:
A: 1 2 3 4 1 2....
B: 2 3 4 1 2 3....
C: 3 4 1 2 3 4....
D: 4 1 2 3 4 1....
设计程序.
求在linux 多线程同步 下的解法
...全文
437
9
打赏
收藏
求高手,google 面试题,多线程,mutex
有四个线程1,2,3,4,线程1的功能就是输出1,线程2的功能就是输出2,以此类推......... 现在有四个文件.ABCD.初始都为空. 现要让四个文件呈如下格式: A: 1 2 3 4 1 2.... B: 2 3 4 1 2 3.... C: 3 4 1 2 3 4.... D: 4 1 2 3 4 1.... 设计程序. 求在linux 多线程同步 下的解法
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
rnnr0711
2009-02-22
打赏
举报
回复
ding
smzgl
2008-05-29
打赏
举报
回复
不考虑非要用多线程同步的话,可以分别先获取4个文件的大小,根据文件大小获取一共有几个1,几个2,几个3,几个4,然后……
非要用的话,可以当作消费者生产者来处理。一个或者四个生产者,然后4种(注意,不是4个),每种一个的消费者
fuqd273
2008-05-19
打赏
举报
回复
两种写法,供参考。
第一种:
A: 1
B:
C:
D:
-->
A: 1 2
B: 2
C:
D:
-->
A: 1 2 3
B: 2 3
C: 3
D:
-->
A: 1 2 3 4
B: 2 3 4
C: 3 4
D: 4
第二种:
A: 1
B: 2
C: 3
D: 4
-->
A: 1 2
B: 2 3
C: 3 4
D: 4 1
-->
A: 1 2 3
B: 2 3 4
C: 3 4 1
D: 4 1 2
-->
A: 1 2 3 4
B: 2 3 4 1
C: 3 4 1 2
D: 4 1 2 3
都能实现,主要问题是,要通过
多线程同步
来做。
具体又分成1个线程锁,以及多个线程锁。
多个线程锁的情况,需要单独的flag来记录初始状态,以保证执行顺序,避免死锁发生。
威廉-丁
2008-05-19
打赏
举报
回复
顶一下
嵌云阁主
2008-05-15
打赏
举报
回复
为每个文件都设置一个锁是否会快些?
chenzhixin
2008-05-15
打赏
举报
回复
4个线程操作同一个变量,用互斥锁,1线程直接求余,然后++,2,3,4线程只在变量基础上加1-3再求余。
4个线程的运行顺序问题可以考虑线程的优先级别
威廉-丁
2008-05-15
打赏
举报
回复
关注中
老腊肉泡酒
2008-05-15
打赏
举报
回复
有思路,可能我想得太简单了吧。
daidodo
2008-05-15
打赏
举报
回复
全局变量:计数器i,和四个文件fd数组
单独线程定时增加i,比如每1秒加1,然后用condition通知1,2,3,4号线程;
1,2,3,4号线程根据当前的得到通知后,对计算(i % 4) + 自己的编号,然后再对应文件fd里写入自己的编号。
Linux
多线程
服务端编程:使用muduo C++网络库
《Linux
多线程
服务端编程:使用muduo C++网络库》主要讲述采用现代C++在x86-64 Linux上编写
多线程
TCP网络服务程序的主流常规技术,重点讲解一种适应性较强的
多线程
服务器的编程模型,即one loop per thread。 目 录 第1部分C++
多线程
系统编程 第1章线程安全的对象生命期管理3 1.1当析构函数遇到
多线程
. . . . . . . . . . . . . . . . .. . . . . . . . . . . 3 1.1.1线程安全的定义. . . . . . . . . . . . . . . . .. . . . . . . . . . . 4 1.1.2
Mutex
Lock 与
Mutex
LockGuard. . . . . . . . . . . . . . . . . . . . 4 1.1.3一个线程安全的Counter 示例.. . . . . . . . . . . . . . . . . . . 4 1.2对象的创建很简单. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . 5 1.3销毁太难. . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . 7 1.3.1
mutex
不是办法. . . . . . . . . . . . . . . . . . . .. . . . . . . . 7 1.3.2作为数据成员的
mutex
不能保护析构.. . . . . . . . . . . . . . 8 1.4线程安全的Observer 有多难.. . . . . . . . . . . . . . . . . . . . . . . . 8 1.5原始指针有何不妥. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . 11 1.6神器shared_ptr/weak_ptr . . . . . . . . . .. . . . . . . . . . . . . . . . 13 1.7插曲:系统地避免各种指针错误. . . . . . . . . . . . . . . . .. . . . . . 14 1.8应用到Observer 上.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 1.9再论shared_ptr 的线程安全.. . . . . . . . . . . . . . . . . . . . . . . . 17 1.10shared_ptr 技术与陷阱. . . .. . . . . . . . . . . . . . . . . . . . . . . . 19 1.11对象池. . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . 21 1.11.1enable_shared_from_this . . . . . . . . . . . . . . . . . . . . . . 23 1.11.2弱回调. . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . 24 1.12替代方案. . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . 26 1.13心得与小结. . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . 26 1.14Observer 之谬. . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 第2章线程同步精要 2.1互斥器(
mutex
). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 2.1.1只使用非递归的
mutex
. . . . . . . . . . . . . .. . . . . . . . . . 33 2.1.2死锁. . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . 35 2.2条件变量(condition variable). . . . . . . . . .
Google
C++
多线程
面试题
Google
C++
多线程
面试题
有四个线程1、2、3、4。线程1的功能就是输出1,线程2的功能就是输出2,以此类推………现在有四个文件ABCD。初始都为空。现要让四个文件呈如下格式: A:1 2 3 4 1 2…. B:2 3 4 1 2 3…. C:3 4 1 2 3 4…. D:4 1 2 3 4 1…. 请设计程序。 网上居然少有合适答案,有个别还行,但是很繁琐(面试时间有限...
朱老师C++课程第4部分-4.5.C++并发编程
《朱老师带你学C++》属于系列课程《朱有鹏老师热门编程语言全解》的第4部分,主要针对C++语言学习。本课程可以看做是嵌入式linux核心课程中《C语言专题》课程的延续,在学好了C语言前提下继续深度学习C++语言。整个课程共分为5部分。涵盖了C++基础语法和使用,面向对象,STL与泛型,Boost库和设计模式,C++编程优化技巧等非常广泛的内容,是市面上非常缺少的深度完整学习C++,培养编程技能和修养的一套系列学习课程。朱老师C++第1部分-从C到C++朱老师C++第2部分-C++和面向对象朱老师C++第3部分-STL等和泛型朱老师C++第4部分-C++编程优化和常见
面试题
朱老师C++第5部分-Boost库和设计模式 课程特色*深入浅出,通俗易懂。不怕学不会,就怕你不学习。*思路清晰、语言风趣,对着视频看也不会想睡觉······*视频 + 文档 + 练习题 + 答疑相结合。*基础知识 + 思路引导的教学方式,授之以鱼更授之以渔。*系列课程。本教程只是入门篇,后续还有更多更精彩视频更新中。
C++后台开发
面试题
总结(涉及C++基础、
多线程
多进程、网络编程等)
C++后台开发
面试题
总结(涉及C++基础知识、
多线程
多进程、TCP/IP网络编程、Linux操作、数据结构与算法) 因巩固知识体系,面试,梳理以往看到过的知识点,故总结如下相关题目,题目答案请自行
google
baidu,这里只提供题目。 一、C++基础知识
面试题
总结 1、多态的实现 2、说说C/C++的区别 3、const关键字 4、说说malloc/free 和 new/delete区别 5、指针和引用的区别 6、C++中堆和栈的区别 7、关键字static 8、在C++程序中调用被
秒杀
多线程
第一篇
多线程
笔试
面试题
汇总
系列前言 本系列是本人参加微软亚洲研究院,腾讯研究院,迅雷面试时整理的,另外也加入一些其它IT公司如百度,阿里巴巴的笔试
面试题
目,因此具有很强的针对性。系列中不但会详细讲解
多线程
同步互斥的各种“招式”,而且会进一步的讲解
多线程
同步互斥的“内功心法”。有了“招式”和“内功心法”,相信你也能对
多线程
挥洒自如,在笔试面试中顺利的秒杀
多线程
试题。 -------------
Linux/Unix社区
23,120
社区成员
74,507
社区内容
发帖
与我相关
我的任务
Linux/Unix社区
Linux/Unix社区 应用程序开发区
复制链接
扫一扫
分享
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章