免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1871 | 回复: 9
打印 上一主题 下一主题

[进程管理] 关于时间片的小例子 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2016-04-13 22:27 |只看该作者 |倒序浏览
static  int printA=1,printB=0;

funA()
{
    while(1)
    {
        if(printA)
        {
             printf("a\n");
              printA=0;
              printB=1:
        }
    }
}

funB()
{
    while(1)
    {
        if(printB)
        {
              printB=0;
              printA=1:
        }
    }
}

int main()
{
    pthreat_create(&tid1,funA.null):
    pthreat_create(&tid2,funB,null):
    sleep(0xffffff);
}

如上例子是在手机上敲的,请大家不要调语法的毛病。
我是想通过这个例子验证进程时间片的,thread在内核也对应一个task struct,所以也是按进程来调度的并且调度策略为sched_other.
所以我预期结果为:每隔一个时间片(也就是大概几十毫秒)打印出a.
但实际输出结果是:每毫秒会输出相当多的a.这意味着每毫秒两个线程切换了相当多次。

或者说pthread在内核不是task形式,仅仅是用户态模拟了一个而已?
自己解释不了,请高手一针见血。

论坛徽章:
0
2 [报告]
发表于 2016-04-14 21:38 |只看该作者
你那个sleep是想让打印不要太多吗?如果是这个想法,应该放在funA或者funB里吧。

论坛徽章:
1
双鱼座
日期:2013-08-28 13:47:26
3 [报告]
发表于 2016-04-15 08:54 |只看该作者
Maybe you can try 'SCHED_RR' policy.

论坛徽章:
0
4 [报告]
发表于 2016-04-15 09:41 |只看该作者
不是,只是为了让进程不退出。回复 2# 349246377


   

论坛徽章:
0
5 [报告]
发表于 2016-04-15 09:44 |只看该作者
我就是想验证按照时间片轮转的。而且我get_sche_policy也确实是0,也就是SCHE_OTHER.问题是不是按照时间片调度的。回复 3# firkraag


   

论坛徽章:
1
双鱼座
日期:2013-08-28 13:47:26
6 [报告]
发表于 2016-04-15 13:09 |只看该作者
http://www.cnblogs.com/imapla/p/4234258.html

And google 'CFS(Completely Fair Scheduler)'.  Maybe can help you.

论坛徽章:
1
水瓶座
日期:2013-10-14 10:55:54
7 [报告]
发表于 2016-04-18 00:40 |只看该作者
A线程和B线程如果不是在一个cpu上运行的呢?

论坛徽章:
1
水瓶座
日期:2013-10-14 10:55:54
8 [报告]
发表于 2016-04-18 00:41 |只看该作者
你可以用taskset命令把A线程和B线程都绑定到一个cpu,再试试看。

论坛徽章:
0
9 [报告]
发表于 2016-04-18 11:34 |只看该作者
一语道破天机,我怎么把多cpu这事忘了。虽然还没试,但应该就是这个问题。后续我会试一下。回复 8# archer239915


   

论坛徽章:
0
10 [报告]
发表于 2016-04-18 12:13 |只看该作者
我确实忽略了多cpu调度这个情况,设置进程在指定cpu运行后,测试结果与预想一直,每隔几十毫秒才会有打印。感谢你一下就说到点子上了。回复 7# archer239915


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

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP