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

  免費(fèi)注冊 查看新帖 |

Chinaunix

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

【總結(jié)】如何把阻塞的Perl模塊重新實(shí)現(xiàn)成非阻塞模塊 [復(fù)制鏈接]

論壇徽章:
1
2015年辭舊歲徽章
日期:2015-03-03 16:54:15
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2014-10-22 06:26 |只看該作者 |倒序?yàn)g覽
前幾周看了一下Mojo::Pg這個(gè)模塊,總結(jié)了一下把阻塞的Perl模塊重新實(shí)現(xiàn)成非阻塞模塊的方法。

Mojo::Pg這個(gè)模塊算是Mojolicious作者給大家寫了一個(gè)很好的例子。仔細(xì)看能學(xué)到很多東西。

在用于進(jìn)行網(wǎng)絡(luò)連接的Perl的模塊中,我按照網(wǎng)絡(luò)連接是否阻塞把他們分成三種。
1. 很多老一些的模塊都是阻塞的,比如Net::FTP,DBD::Oracle, BerkeleyDB
對于第一類模塊,要改成非阻塞的,在不改動原有代碼的情況下就只能通過fork一類的方法實(shí)現(xiàn)了。另外的辦法就是整個(gè)用
AnyEvent::Socket/Coro::Socket,Coro::Handle等模塊從寫。工程比較大。

2. 還有一些比較老的模塊,他們雖然是阻塞的,但提供了非阻塞的參數(shù),比如DBD::mysql,DBD::Pg,Net::LDAP等等。
主要說這部分。這一類模塊要改成非阻塞相對于前一類要容易的多,只要善加利用阻塞參數(shù),設(shè)計(jì)和封裝一個(gè)新的API就可以了。但說實(shí)話我對于如何設(shè)計(jì)這個(gè)東西完全沒頭緒也沒有思考過,如果要我做,我肯定是去看一些已有的實(shí)現(xiàn)(比如AnyEvent::DBI::MySQL),然后按葫蘆畫瓢。
最近Mojolicious作者因?yàn)镸ongoDB 文檔的原因準(zhǔn)備放棄Mango模塊的維護(hù)權(quán),轉(zhuǎn)而開始了對PostgreSQL的支持,寫了Mojo::Pg模塊?催@個(gè)模塊的代碼實(shí)現(xiàn)能夠很好的學(xué)習(xí)Mojo實(shí)現(xiàn)的非阻塞的設(shè)計(jì),并且可以重用很多作者的代碼。Mojo::MySQL就是個(gè)很好的例子,它復(fù)制了幾乎所有Mojo::Pg的代碼實(shí)現(xiàn)了一個(gè)MySQL的異步數(shù)據(jù)庫連接。有興趣的朋友可以看看異步實(shí)現(xiàn)的部分https://metacpan.org/source/SRI/ ... Pg/Database.pm#L132
Mojolicious作者寫的文檔個(gè)人覺得還是不夠好的,文檔結(jié)構(gòu)組織的不好,給最終用戶使用的部分說的比較詳細(xì),但涉及到和AnyEvent一個(gè)級別的模塊,比如Mojo::IOLoop,文檔說明就太不夠了,遠(yuǎn)不如AnyEvent模塊文檔介紹的那么詳細(xì),這次作者寫的Mojo::Pg模塊是個(gè)非常好的例子,可以很好的理解異步實(shí)現(xiàn)的方法。

3. 一些新的模塊是非阻塞的,比如AnyEvent::HTTP,AnyEvent::DBI::MySQL,Mojo::Mysql,Mojo::Pg等等
上面舉的這幾個(gè)例子都是比較完美實(shí)現(xiàn)異步通訊的,但也有用fork類方法實(shí)現(xiàn)的,在挑選模塊的時(shí)候最好是看清文檔,比如AnyEvent::DBI模塊就是fork實(shí)現(xiàn)的。

論壇徽章:
42
19周年集字徽章-周
日期:2019-10-14 14:35:31平安夜徽章
日期:2015-12-26 00:06:30數(shù)據(jù)庫技術(shù)版塊每日發(fā)帖之星
日期:2015-12-01 06:20:002015亞冠之首爾
日期:2015-11-04 22:25:43IT運(yùn)維版塊每日發(fā)帖之星
日期:2015-08-17 06:20:00寅虎
日期:2014-06-04 16:25:27獅子座
日期:2014-05-12 11:00:00辰龍
日期:2013-12-20 17:07:19射手座
日期:2013-10-24 21:01:23CU十二周年紀(jì)念徽章
日期:2013-10-24 15:41:34IT運(yùn)維版塊每日發(fā)帖之星
日期:2016-01-27 06:20:0015-16賽季CBA聯(lián)賽之新疆
日期:2016-06-07 14:10:01
2 [報(bào)告]
發(fā)表于 2014-10-22 07:21 |只看該作者
學(xué)習(xí)了。也去翻翻源碼看。

論壇徽章:
13
雙魚座
日期:2013-10-23 09:30:05數(shù)據(jù)庫技術(shù)版塊每日發(fā)帖之星
日期:2016-04-20 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2016-03-09 06:20:002015亞冠之塔什干火車頭
日期:2015-11-02 10:07:452015亞冠之德黑蘭石油
日期:2015-08-30 10:07:07數(shù)據(jù)庫技術(shù)版塊每日發(fā)帖之星
日期:2015-08-28 06:20:00數(shù)據(jù)庫技術(shù)版塊每日發(fā)帖之星
日期:2015-08-05 06:20:002015年迎新春徽章
日期:2015-03-04 09:57:09辰龍
日期:2014-12-03 14:45:52酉雞
日期:2014-07-23 09:46:23亥豬
日期:2014-03-13 08:46:22金牛座
日期:2014-02-11 09:36:21
3 [報(bào)告]
發(fā)表于 2014-10-22 09:38 |只看該作者
總結(jié)的不錯(cuò)

論壇徽章:
8
技術(shù)圖書徽章
日期:2013-08-22 11:21:28未羊
日期:2015-01-19 22:22:25巳蛇
日期:2014-08-11 16:53:08子鼠
日期:2014-05-29 09:04:44摩羯座
日期:2014-04-11 14:15:07丑牛
日期:2014-01-24 12:41:28金牛座
日期:2013-11-21 17:38:28射手座
日期:2015-01-21 08:50:32
4 [報(bào)告]
發(fā)表于 2014-10-22 11:19 |只看該作者
謝謝樓主。。。
您需要登錄后才可以回帖 登錄 | 注冊

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

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP