亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
12下一頁
最近訪問板塊 發(fā)新帖
查看: 6459 | 回復(fù): 14
打印 上一主題 下一主題

如何提高線程切換和通信速度? [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2011-04-20 23:24 |只看該作者 |倒序瀏覽
本帖最后由 zhutroy 于 2011-04-20 23:26 編輯

有兩個線程,
一個是producer,有一段任務(wù)代碼, 現(xiàn)在交給consumer執(zhí)行。
一個是consumer,收到消息后執(zhí)行代碼。

consumer使用 SCHED_RR, 優(yōu)先級是1, 兩個線程使用pthread_cond_wait 和pthread_signal
做通信, 感覺速度比較慢,

如果producer自己執(zhí)行consumer中的程序, 會快很多。

consumer的程序如下類似:

//consumer is a higher priority waiting thread.
consumer{       
        while(1)  //可以這樣做嗎?
        {
               
                pthread_mutex_lock(&mutex);
                if(empty)
                        pthread_cond_wait(&cond_full, &mutex);
                //execute some code
                pthread_cond_signal(&cond_empty);               
                pthread_mutex_unlock(&mutex);
        }       
}

//producer is call by high level application.
producer
{
        pthread_mutex_lock(&mutex);
        if(full)
                pthread_cond_wait(&cond_empty, &mutex);
        //execute some code
        pthread_cond_signal(&cond_full);
        pthread_mutex_unlock(&mutex);
}

論壇徽章:
5
技術(shù)圖書徽章
日期:2013-11-07 13:21:58技術(shù)圖書徽章
日期:2013-12-07 10:34:46技術(shù)圖書徽章
日期:2014-04-23 08:50:31雙魚座
日期:2014-09-16 09:12:34亥豬
日期:2015-01-23 13:37:49
2 [報告]
發(fā)表于 2011-04-21 08:25 |只看該作者
感覺你這兩個條件變量可以去掉一個。

論壇徽章:
0
3 [報告]
發(fā)表于 2011-04-21 09:58 |只看該作者
去掉也快不了多少吧。。。
我覺得這樣用注定要慢的,即使是SCHED_RR。

論壇徽章:
2
水瓶座
日期:2013-09-04 15:09:57白羊座
日期:2014-04-17 16:48:13
4 [報告]
發(fā)表于 2011-04-21 10:14 |只看該作者
你幾個CPU的?

單CPU當(dāng)然速度要慢,比起直接執(zhí)行還多了信號同步這一步。

論壇徽章:
0
5 [報告]
發(fā)表于 2011-04-21 10:15 |只看該作者
我不希望要執(zhí)行的一部分程序被普通任務(wù)打斷

可以由高優(yōu)先級任務(wù)代勞實現(xiàn), 效率有點低, 有沒有別的方式哪?

論壇徽章:
0
6 [報告]
發(fā)表于 2011-04-21 11:27 |只看該作者
感覺速度比較慢,

如何確定慢的呢,直觀感覺嗎?不會慢到這種程度吧。

論壇徽章:
0
7 [報告]
發(fā)表于 2011-04-21 11:39 |只看該作者
感覺速度比較慢,

如何確定慢的呢,直觀感覺嗎?不會慢到這種程度吧。
cskyrain 發(fā)表于 2011-04-21 11:27


同問?
怎么個慢法?

論壇徽章:
0
8 [報告]
發(fā)表于 2011-04-21 12:28 |只看該作者
你感覺慢,那么得找出瓶頸在哪?感覺不會是線程切換的問題。
很可能是你的producer和consumer的處理或許有問題

論壇徽章:
0
9 [報告]
發(fā)表于 2011-04-21 17:17 |只看該作者
感謝上面的關(guān)注.
詳細(xì)情況是:
幾乎一個數(shù)量級的慢, 以前生產(chǎn)者直接執(zhí)行每秒能直接執(zhí)行500次
現(xiàn)在每秒大約50次操作, 每一次同步通信耗時約20毫秒.

另外: 應(yīng)用環(huán)境是單核ARM926, kernel是2.6.18。

我認(rèn)為每次生產(chǎn)者與消費者模型,完成一次生產(chǎn)與消費大約需要20毫秒時間。 而不是1-2毫秒甚至忽略不計。

論壇徽章:
0
10 [報告]
發(fā)表于 2011-04-21 17:59 |只看該作者
不要以為用了RR效果就會好,很可能適得其反,因為引入了不必要的上下文切換。
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP