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

Chinaunix

標(biāo)題: 請(qǐng)問(wèn)erlang的輕量級(jí)進(jìn)程是如何實(shí)現(xiàn)的 [打印本頁(yè)]

作者: blizzard213    時(shí)間: 2008-09-06 00:39
標(biāo)題: 請(qǐng)問(wèn)erlang的輕量級(jí)進(jìn)程是如何實(shí)現(xiàn)的
erlang的運(yùn)行時(shí)是用c實(shí)現(xiàn)的吧
它的進(jìn)程應(yīng)該也是用c實(shí)現(xiàn)的
為什么用c+系統(tǒng)接口模擬出來(lái)的進(jìn)程卻要比native進(jìn)程還牛逼呢?
我是函數(shù)編程以及腳本語(yǔ)言的菜鳥(niǎo)
還想問(wèn)大拿們一個(gè)問(wèn)題
這些語(yǔ)言的系統(tǒng)庫(kù)到底是如何實(shí)現(xiàn)的呢? 比如erlang的gen_tcp
它是如何調(diào)用到平臺(tái)的socket功能的?
是不是直接通過(guò)運(yùn)行時(shí)(虛擬機(jī))直接映射語(yǔ)言調(diào)用實(shí)現(xiàn)的呢?
比如編譯器看到一個(gè)erlang的connect調(diào)用 它便生成connect(socketfd,...)類似的native代碼呢??
我昏了。。。
作者: zenith518    時(shí)間: 2008-09-07 23:51
我也想了解,曾經(jīng)測(cè)試過(guò),用ab發(fā)起多線程HTTP連接,最多只能完成220req/s左右。
而用erlang的inets庫(kù)隨便寫(xiě)了一個(gè)類似的客戶端,能支持到440~500req/s。
erlang是怎么做到的?
作者: fuqiang_huang    時(shí)間: 2008-09-16 13:06
它是COP(面向并發(fā)的程序設(shè)計(jì)),所有的都是進(jìn)程,合理的負(fù)載均衡.
有動(dòng)態(tài)語(yǔ)言和FPL的雙重特點(diǎn).
所有這些都是由語(yǔ)言處理方法和實(shí)現(xiàn)策略決定的,可以通過(guò)分析處理流程體現(xiàn)出來(lái).
這些資料能在網(wǎng)上找到。

[ 本帖最后由 fuqiang_huang 于 2008-9-16 13:11 編輯 ]
作者: blizzard213    時(shí)間: 2008-09-16 14:36
原帖由 fuqiang_huang 于 2008-9-16 13:06 發(fā)表
它是COP(面向并發(fā)的程序設(shè)計(jì)),所有的都是進(jìn)程,合理的負(fù)載均衡.
有動(dòng)態(tài)語(yǔ)言和FPL的雙重特點(diǎn).
所有這些都是由語(yǔ)言處理方法和實(shí)現(xiàn)策略決定的,可以通過(guò)分析處理流程體現(xiàn)出來(lái).
這些資料能在網(wǎng)上找到。


回答得不到位啊
我想問(wèn)的是erlang的進(jìn)程如何映射到erlang虛擬機(jī)實(shí)現(xiàn)的c代碼上 數(shù)據(jù)結(jié)構(gòu) 以及 算法

大拿們提供一些erlang源代碼分析方面的文章 和 經(jīng)驗(yàn)
作者: fuqiang_huang    時(shí)間: 2008-09-16 14:53
我不是大拿,hehe!!,共同學(xué)習(xí)與研究
你的問(wèn)題無(wú)法回答到位,太過(guò)于龐大,我只是給一個(gè)探究的方法,源碼分析是要有方法與技術(shù)支持的,不可能一步到位;
“我想問(wèn)的是erlang的進(jìn)程如何映射到erlang虛擬機(jī)實(shí)現(xiàn)的c代碼上”這種問(wèn)法不好理解,
進(jìn)程是什么?與操作系統(tǒng)中的進(jìn)程一樣嗎?(不一樣)
虛擬機(jī)起什么作用?要分析源碼才能了解它的實(shí)現(xiàn)方法?
我只是說(shuō)明了研究的思路。

[ 本帖最后由 fuqiang_huang 于 2008-9-16 15:13 編輯 ]
作者: lileding    時(shí)間: 2008-09-16 22:10
Erlang的進(jìn)程不一定對(duì)應(yīng)系統(tǒng)進(jìn)程的
我對(duì)這個(gè)東西不了解,瞎猜的
現(xiàn)代系統(tǒng)普遍基于虛擬內(nèi)存和寫(xiě)時(shí)拷貝
由于函數(shù)式語(yǔ)言獨(dú)特的變量觀念,他們并不一定需要使用C的malloc機(jī)制
這樣,fork的成本就會(huì)非常低,然后再mmap個(gè)共享內(nèi)存,通信也不是大問(wèn)題
另一方面,也可以做m:n的模型,跟線程一樣
因?yàn)閑rlang有自己的虛擬機(jī),這么就完全可以保證線程之間的地址空間不被錯(cuò)誤引用
具體方式,可能跟libc_r的方法接近
作者: system888net    時(shí)間: 2008-09-17 22:17
原帖由 blizzard213 于 2008-9-6 00:39 發(fā)表
erlang的運(yùn)行時(shí)是用c實(shí)現(xiàn)的吧
它的進(jìn)程應(yīng)該也是用c實(shí)現(xiàn)的
為什么用c+系統(tǒng)接口模擬出來(lái)的進(jìn)程卻要比native進(jìn)程還牛逼呢?
我是函數(shù)編程以及腳本語(yǔ)言的菜鳥(niǎo)
還想問(wèn)大拿們一個(gè)問(wèn)題
這些語(yǔ)言的系統(tǒng)庫(kù)到底是如何 ...



在windows2000下加載了erlang解釋器(或虛擬機(jī)),他產(chǎn)生了一個(gè)進(jìn)程.八個(gè)線程(雙核的機(jī)器)
運(yùn)行如下代碼:

  1. -module(mprocess).
  2.      -export([run/0, say_string/2]).
  3.      say_string(What, 0) -> done;
  4.      say_string(What,Count) ->io:format("~p~n", [What]),
  5.      say_string(What, Count - 1).
  6.      run()->spawn(mprocess, say_string, [hello, 300000]),
  7.               spawn(mprocess, say_string, [goodbye, 300000]).
復(fù)制代碼


mprocess:run().

進(jìn)程數(shù)量并沒(méi)有增加,線程數(shù)量也沒(méi)增加.

說(shuō)明可能:
        1. spawn調(diào)用并不會(huì)產(chǎn)生windows操作系統(tǒng)級(jí)的進(jìn)程.
        2. erlang的多進(jìn)程"可能"是依賴windows操作系統(tǒng)的多線程為基礎(chǔ)的(實(shí)際上這點(diǎn)有于時(shí)間關(guān)系還不能明確確認(rèn)).
由于時(shí)間關(guān)系,沒(méi)能做仔細(xì)的分析,因此還不能確認(rèn). 等有時(shí)間時(shí)在進(jìn)一步確認(rèn)一下.
lz或其他大拿若有時(shí)間也可仔細(xì)測(cè)試分析一下,并能把結(jié)論跟大家交流一下最好.
作者: blizzard213    時(shí)間: 2008-09-18 02:05
原帖由 system888net 于 2008-9-17 22:17 發(fā)表



在windows2000下加載了erlang解釋器(或虛擬機(jī)),他產(chǎn)生了一個(gè)進(jìn)程.八個(gè)線程(雙核的機(jī)器)
運(yùn)行如下代碼:

-module(mprocess).
     -export([run/0, say_string/2]).
     say_string(What, 0) -> don ...


恩 你的回答類型是我希望看到的
也和我的研究思路相同
謝謝 大家繼續(xù)交流

[ 本帖最后由 blizzard213 于 2008-9-18 02:06 編輯 ]
作者: Magicloud    時(shí)間: 2008-09-19 17:48
erlang對(duì)進(jìn)程的定義重點(diǎn)是相互隔離,概念上和系統(tǒng)的進(jìn)程、線程完全無(wú)關(guān)。
作者: blizzard213    時(shí)間: 2008-09-19 20:59
原帖由 Magicloud 于 2008-9-19 17:48 發(fā)表
erlang對(duì)進(jìn)程的定義重點(diǎn)是相互隔離,概念上和系統(tǒng)的進(jìn)程、線程完全無(wú)關(guān)。

實(shí)現(xiàn)高并發(fā)難道可以完全不使用native進(jìn)程 線程接口?
把c玩成魔法也不可能吧
作者: system888net    時(shí)間: 2008-09-23 13:33
原帖由 blizzard213 于 2008-9-19 20:59 發(fā)表

實(shí)現(xiàn)高并發(fā)難道可以完全不使用native進(jìn)程 線程接口?
把c玩成魔法也不可能吧


用到了線程接口,但不是一對(duì)一的關(guān)系. 也就是并行用到了線程,但這是虛擬機(jī)內(nèi)部自己處理的,與erlang程序中用到進(jìn)程在概念上不是對(duì)應(yīng)關(guān)系.
也就是erlang虛擬機(jī)在根據(jù)實(shí)際機(jī)器的CPU數(shù)量等并在以來(lái)操作系統(tǒng)多線程的基礎(chǔ)上利用自己的一套規(guī)則對(duì)erlang進(jìn)程進(jìn)行協(xié)調(diào)調(diào)度.
作者: blizzard213    時(shí)間: 2008-09-24 00:20
原帖由 system888net 于 2008-9-23 13:33 發(fā)表


用到了線程接口,但不是一對(duì)一的關(guān)系. 也就是并行用到了線程,但這是虛擬機(jī)內(nèi)部自己處理的,與erlang程序中用到進(jìn)程在概念上不是對(duì)應(yīng)關(guān)系.
也就是erlang虛擬機(jī)在根據(jù)實(shí)際機(jī)器的CPU數(shù)量等并在以來(lái)操作系統(tǒng)多線 ...


對(duì) 仁兄每次都回答得和小弟的想法比較相近
我發(fā)這個(gè)帖子想知道的正是這個(gè) erlang虛擬機(jī)操作本地線程來(lái)實(shí)現(xiàn)erlang進(jìn)程的一系列規(guī)則

等過(guò)段時(shí)間閑下來(lái) 好好dig一下源代碼
作者: ypyf3000    時(shí)間: 2009-03-18 00:42
《游戲腳本高級(jí)編程》中有對(duì)多線程虛擬機(jī)的解析,可以參考一下
作者: tingya    時(shí)間: 2011-05-18 18:13
window下用的是纖程。切換的代價(jià)非常低
作者: tingya    時(shí)間: 2011-05-18 18:15
http://blog.csdn.net/luo_xuewu/archive/2011/05/04/6394645.aspx
這邊有文章可以看看。

在linux下用的是ucontext_t




歡迎光臨 Chinaunix (http://72891.cn/) Powered by Discuz! X3.2