找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 2723|回复: 2
收起左侧

一道gg多线程面试题求讨论

[复制链接]

4

主题

0

精华

33

积分

新米人

Rank: 1

积分
33
发表于 3-5-2015 03:40 PM | 显示全部楼层 |阅读模式

亲!马上注册或者登录会查看更多内容!

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
实现 void Schedule(int64 timestamp, function* to_run) = 0;多个模块会调用这个function*, 如何实现。   

群里看到的题目,大概做法应该是:
一个min heap,key是timestamp,value是thread
一个hash table,key是thread id,value是对应thread在min heap中的entry,方便随时添加或kill

然后就是一个listener thread的了。。。到点就wake up根据min heap最小的time 跟 curtime 比看是否要执行该function。。。当然follow up可以提一下加锁之类的。。。

那么问题来了。。。。这种一个listener thread加一群working thread的程序该怎么写。。。有人能大概写个轮廓么。。。c++或java都行。。。实在不知道怎么下手。。。求大神帮忙- -



来源: [url=forum.php?mod=viewthread&tid=2057]一道gg多线程面试题求讨论[/url]

本帖被以下淘专辑推荐:

  • · Google|主题: 53, 订阅: 25

14

主题

9

精华

460

积分

高级会员

Rank: 3Rank: 3

积分
460
发表于 4-13-2016 07:56 PM | 显示全部楼层
为什么我没从你的题目里看出多线程问题? 难道每一个 to_run就是一个要启动的线程? 那么heap已经很好用了
回复 支持 反对

使用道具 举报

6

主题

3

精华

64

积分

资深会员

Rank: 2

积分
64
发表于 7-19-2016 03:05 PM | 显示全部楼层
问题没有讲清楚,多次被调用-是被多个不同线程调用吗? 如果被其中一个调用过,是否在一定时间内不可以再次被其他线程调用?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表