CSAPP-12 Concurrent Programming 并发编程 读书笔记

CSAPP Concurrent Programming

综述

并发编程大概有3种不同的实现方法。

  • 进程

  • IO多路复用

  • 线程

这三种方法各有优缺点。 对于进程来说,进程拥有独立的地址空间,但是进程之间通信需要用IPC,较为不便 IO多路复用其实只有一个进程,但是在这一个进程里面,拥有一个状态机,根据不同的IO到达的状态,执行不同的逻辑,从而实现并发。IO多路复用里面的控制流不会被系统调度,而且自身根据状态调度。 线程结合了IO多路复用和进程的特点,一个进程可以包含多个线程,这多个线程共享同一个地址空间,这方便了线程之间的通信,同时线程也可以像进程一样被系统调度。

关于接下来的讨论

为什么要实现并发呢?我们考虑这样一个例子:一个HTTP服务器,当客户端连接到HTTP服务器后,客户端发送一些数据,服务器返回对应的信息。

如果没有并发,那么服务器只能实时的“照顾一位顾客”,当有第二位顾客到来,服务器边只能暂时搁置第二位顾客。

这显然是不能接受的,所以我们要实现“并发”,让服务器可以在一段时间内,同时照顾着多个顾客。注意这里我们用的是一段时间来描述,因为并发不要求在一个时刻同时服务多个顾客,而只要在一段时间内同时照顾到这多个顾客即可。对应的,如果使用一个时刻这个词的话,我们的描述应该是“并行”,也就是 parallel ,对应的可能有多个服务员,来实现并行。

为了实现并行,大致有上面刚刚说到的3个方案。下面就来详细的探讨一下

使用进程实现并发

进程是大家都相当熟悉的,在linux下面使用fork创建一个进程,之后系统就会对不同的进程进行调度。这是内核自动完成的,不需要我们手动的干预,每个进程就像是一个虚拟的小人一样,只不过这个小人一会儿运动,一会儿不运动。但是只要运动的时间间隔够小,你就感受不到他是“虚拟的”。

对于每个进程来说,他们都有着自己独立的虚拟内存空间。这既是优点也是缺点:

  • 优点在于

    • 独立的地址空间,可以消除不同进程之间的奇奇怪怪的冲突。

  • 缺点在于

    • 需要使用IPC进行进程间通信,这通常来说是比较慢速的。

同时,进程的调度消耗也是比较大的。

示例代码如下:

注意第33行,他在主进程里面关掉了connfd这个文件描述符,这主要是因为子进程和父进程之间共享同一个文件描述表。所以父进程和子进程都需要关闭这个文件描述符,以防止内存泄露,关于这点需要详细的了解一下系统IO。

使用IO多路复用实现并发

我们来考虑一下进程的缺点。

首先,进程很占资源,无论是进程之间的调度,还是进程占用的内存,对系统都是一笔不小的开销。当客户太多之后,如果每个客户都要一个服务员的“影分身”,那么服务员很可能就先挂了,他不能分出太多的分身。那么有什么办法可以改善这个情况吗?

考虑一下,服务员的每个影分身都在干什么:当一个客户到达餐馆后,客户并不是时时刻刻都需要和服务员交流。也就是说,大部分时间,我们的“影分身”都在等待客户,这就是IO阻塞

基于以上特点,我们能不能用一个服务员就满足多个客户的需求呢?当然是可以的。

当每个客户进入饭店后,服务员都安排他们坐下,当客户点好餐后,客户举手,这时候服务员就会看到客户,然后到他跟前处理一下,接着看下面有没有举手的,如果有新的举手的,就继续处理。

这其实是一种事件驱动模型,客户举手或者新客户到达,都是一个“事件”。

事实上,现在很多的高性能服务器,例如NodeJs Nginx等,都使用事件驱动的编程方法,内涵思想就是IO多路复用,为什么呢?主要就是因为他具有巨大的性能优势。

总结一下优点和缺点:

优点

  • 速度快

  • 因为在单个进程中,数据易于共享。

  • 易于调试

缺点

  • 写代码复杂

  • 进程可能阻塞

  • 无法利用多核处理器

考虑下第二个缺点,进程可能阻塞,这是什么意思呢?我们知道事件驱动模型、IO多路复用的服务器是通常是运行在单个进程上的。这意味着一旦阻塞,这个进程上的所有客户都将被搁置。 假如有一个恶意的顾客,来到饭馆举手,把服务员钓来之后,一直支支吾吾不说清楚,这是不是耽误了其他顾客呢?

对于这个问题,可以使用非阻塞IO来解决

关于阻塞IO、同步、异步、非阻塞的问题需要专门写一篇文章来梳理,这里先挖个坑,以后填上。

使用线程实现并发

特点

前面说了两个实现并发的方法。

第一个:进程,由系统进行调度,不同程序流之间的地址是互相独立的,各自拥有虚拟地址,但是开销较大,进程之间数据交换较为困难。

第二个:IO多路复用,在一个进程里面,根据IO的状态执行不同的控制流,实现并发。

下面要说的线程,就结合了上面两种方法的特点:线程可以被系统所调度、同时在同一个进程下的不同线程可以共享一个地址空间、共享一些数据。

线程的上下文比进程的上下文要小的很多,这是为什么呢。主要的问题在于进程需要管理系统分配的资源、内存等,而线程是共享进程的资源,自己只需要关注和自己运行逻辑相关的堆栈、寄存器切换就可以。

这里有一个问题,切换进程的时候,cache怎么办。这里再挖个坑。

线程当中的一个小坑:

考虑如下一段程序,开启线程的时候,把参数的指针传入线程,线程中再从这个地址取出参数。这有什么问题吗?

问题很大,主要在于线程与线程之间的运行顺序是未知的,当我们传入一个地址后,如果地址上的内容改变,然后子线程再被调度,那么子线程就收到了一个错误的参数,所以我们必须保护这个参数的地址在子线程取出参数前不受其他线程的干扰,可以考虑单独给这个参数malloc一个空间。

Nginx vs. Apache

Apache使用的是阻塞IO+多线程模型

Nginx使用的是非阻塞IO+IO多路复用模型

所以Nginx更是个处理大量的并发操作。值得注意的是,Nginx其实是多线程+每个线程IO多路复用,这其实结合了上面两种思想。这样就可以既利用多核心,同时保证高并发。

线程的内存模型

线程共享同一个虚拟内存,这更易于共享数据,但也容易带来一些疑惑,哪些内存是共享的,哪些内存是线程独有的呢?

对于线程来说,每个线程都有自己独立的:线程ID、栈、栈指针、PC指针、条件码、通用寄存器

但在一个进程中的线程全部共享这个进程的上下文,这包括read-only text(CODE区)、可读写数据、堆、共享库的代码和数据区、打开的文件

寄存器是永远不共享的,但虚拟内存区域总是共享的

这意味着,虽然每个线程都有各自的stack,但他们是没有保护,也就是说,如果你有一个线程的栈区域内存指针,那么你可以在另一个线程中使用指针去访问这个地址的数据

变量在内存中的区域

c语言中,变量有多个类型,根据他们的存储类型,映射到虚拟内存中

  • 全局变量

    全局变量是声明在函数外的变量,被存储在虚拟内存的读写数据区,可以被同个进程中任意线程引用。

  • 局部变量

    声明在函数内、没有static关键字。在运行的时候,每个线程的stack包含一个变量的实例

  • 局部静态变量

    函数内声明,但使用static关键字,即使有多个线程运行,他们也只有一个实例存在,放在和全局变量一样的地方。

信号量同步线程

虽然不同线程之间共享变量很方便,但如果两个线程错误同时访问了两个变量,就可能产生错误。

考虑以上程序,会出什么问题呢,不就是共享了一个cnt而且两个线程一直++吗,这看起来没啥问题啊,你加一,我加一,一起快乐做游戏。

其实问题就在于,我们的思维上,cnt++这个操作是一个整体,但实际运行中,cnt++这个操作是分离的。

主要分为Load Update Save三个步骤,那么这就不是一个整体的操作了,显然在这种分散操作的情况下,就容易出现共享变量出错。

用CSAPP中的线程图来解释:

两个线程陷入了不安全区域

那么如何让他们协同工作呢?

很简单,只要让cnt++变成原子操作,即当某个线程进入L U S这个步骤之后,其他的线程不得干扰,必须等待该线程操作完成。

下面就借助信号量实现线程之间的同步协同:

信号量

Djikstra是并发编程的先驱,是他首先提出了信号量解决同步问题的方案。信号量是一个变量,是一个非负整数,仅仅只能被两个操作所访问:P、V

P(s):如果s是非零的,那么s–,并且立即返回。如果s是0,那么暂停这个线程直到s变成非0;

V(s):s++

P和V的操作必须是原子的,也就是不可分离的,原子操作的底层实现依赖于硬件提供的硬件接口。

使用如图的顺序,在cnt前后用PV保护起来,即可实现只有一个线程可以访问这个区域:

这种只允许0-1的信号量,称为二元信号量,以互斥为目的的二元信号量常称为互斥锁(mutex)

生产者消费者问题

生产者消费者很常见,我们常用的事件循环模型就是典型的生产者消费者。

这里打算再写另外一个文章来描述这个典型的例子

性能开销

同步操作的开销是非常巨大的,所以需要尽量避免在许多个线程中同时访问共享变量,尽量使用局部变量。

以下这些问题都相当关键,另开文章来写

线程安全

死锁

CSAPP-12 Concurrent Programming 并发编程 读书笔记》有3个想法

  1. erotik

    Thanks for the sensible critique. Me & my neighbor were just preparing to do some research about this. We got a grab a book from our local library but I think I learned more from this post. I am very glad to see such wonderful info being shared freely out there. Robena Stu Ifill

    回复
  2. contactctiefp

    I’m happy to welcome you!

    Newsletters of Your messages via contact forms to the sites of firms via any countries and domain zones of the world in all languages.

    website =» xn—-7sbb1bbndheurc1a.xn--p1ai

    The Letter is sent to email address of institution 100% will get to inbox!

    4000 bases:
    Price List =» xn—-7sbb1bbndheurc1a.xn--p1ai/prajs-list/

    Test:
    twenty thousand messages on foreign zones to your email address – 20 $.
    We need from You only electronic box, title and text of the letter.

    In our price there are more 800 databases for all countries of the world.
    Common databases:
    All Europe 44 countries 60726150 of domain names – 1100$
    All European Union 28 countries 56752547 of domain names- 1000$
    All Asia 48 countries 14662004 of sites – 300$
    All Africa 50 countries 1594390 of domains – 200$
    All North and Central America in 35 countries 7441637 of domain names – 300$
    All South America 14 countries 5826884 of domain names – 200$
    New sites from around the world registered 24-48 hours ago. (A cycle of 15 mailings during the month) – 500$
    Businesses of the Russian Federation 4025015 – 300$
    Ukraine 1114526 of domains – 100$
    All Russian-speaking countries minus Russia are 14 countries and there are 1979217 of sites – 200$
    New domains of the RF, registered 24-48 hours ago (A cycle of 15 mailings during the month) – 250$

    Our databases:
    WHOIS databases of domains for all countries of the world.
    You can purchase our databases separately from newsletter’s service at the request.

    P.S.
    Please, do not respond to this message from your electronic box, as it has been generated automatically and will not get anywhere!
    Contact Feedback form =» xn—-7sbb1bbndheurc1a.xn--p1ai/to-order/

    PRICE LIST:

    Test mailing: $20 – 20000 contact forms websites

    All Europe 44 countries there are 60726150 websites – $1100

    All EU 28 countries there are 56752547 websites – $1000

    All Asia 48 countries there are 14662004 websites – $500

    All Africa 50 countries there are 1594390 websites – $200

    All North and Central America is 35 countries there are 7441637 websites – $300

    All South America 14 countries there are 5826884 websites – $200

    Top 1 Million World’s Best websites – $100

    Top 16821856 the most visited websites in the world – $300

    New websites from around the world registered 24-48 hours ago. (A cycle of 15 mailings during the month) – 500$

    Businesses and organizations of the Russian Federation – there are 4025015 websites – $300

    All Russian-speaking countries minus Russia – there are 14 countries and 2440822 websites – $200

    New websites of the Russian Federation, registered 24-48 hours ago. (A cycle of 15 mailings during the month) – 250$

    1499203 of hosting websites around the world (there are selections for all countries, are excluded from databases for mailings) – $150

    295285 websites of public authorities of all countries of the world (selections for all countries, are excluded from databases for mailings) – $100

    3516251 websites online stores Worldwide – $250

    CMS mailings:

    3dCart 14689 websites – $50
    Adobe CQ5 133567 websites – $80
    Advance 17589 websites – $50
    AdVantShop.NET 2453 websites – $30
    ALMA 7095 websites – $30
    Ametys 2389 websites – $30
    Amiro 29587 websites – $30
    Angora 20357 websites – $50
    AVS 1369 websites – $30
    BbPress 1487 websites – $30
    BESTWEB 2699 websites – $30
    BigCommerce 78257 websites – $50
    Bitrix 319687 websites – $80
    Blogger 658267 websites – $80
    Blogspot 279865 websites – $80
    BuddyPress 51477 websites – $50
    Burning Board 4659 websites – $30
    Catalyst Web 11689 websites – $50
    ClassiPress 11796 websites – $50
    CMSimple 11052 websites – $30
    Concrete5 72100 websites – $50
    Contao 110897 websites – $80
    CONTENIDO 5069 websites – $30
    Convio 2268 websites – $30
    Coppermine Photo 1296 websites – $30
    CS Cart 11400 websites – $30
    Datalife Engine 42587 websites – $50
    Dede 230589 websites – $100
    DedeEIMS 96068 websites – $50
    DIAFAN 4058 websites – $30
    Discuz 47962 websites – $50
    Django 71167 websites – $50
    DokuWiki 9588 websites – $30
    Dotnetnuke 82964 websites – $50
    Drupal 978298 websites – $100
    EasyBlog 1165978 websites – $100
    EPiServer 29876 websites – $50
    ExpressionEngine 1769823 websites – $150
    eZ Publish 5367 websites – $30
    F- 9356 websites – $30
    FireBoard 1567 websites – $30
    General Blogs 2067 websites – $30
    GetSimple 23094 websites – $50
    Host 6871 websites – $30
    HostCMS 5042 websites – $30
    HubSpot 31762 websites – $50
    i- 9438 websites – $30
    Image 1368 websites – $30
    InSales 14149 websites – $50
    InSales 11081 websites – $30
    InstantCMS 4136 websites – $30
    InteractiveBBS 32367 websites – $50
    Invision Power Board 2430 websites – $30
    IPBoard 2266 websites – $30
    IT 15189 websites – $50
    jforum 1056 websites – $30
    jobberBase 3387 websites – $30
    Joomla K2 154367 websites – $80
    Joomla 1906994 websites – $200
    Koobi 3722 websites – $30
    Liferay 5137 websites – $30
    Made Simple 20567 websites – $50
    Magento 369447 websites – $80
    MediaMaxScript 103896 websites – $80
    MediaWiki 41468 websites – $50
    Microsoft SharePoint 13198
    MODx 64023 websites – $50
    Moodle 8195 websites – $30
    Movable Type 13096 websites – $50
    MyBB 4367 websites – $30
    myUPB 3397 websites – $30
    NetCat 7294 websites – $30
    NG 18356 websites – $50
    NING 3687 websites – $30
    NopCommerce 18600 websites – $30
    Open 5916 websites – $30
    OpenCart 667000 websites – $80
    Osclass 4652 websites – $30
    osCommerce 68468 websites – $50
    OUR- 3096 websites – $30
    OXID eShop 12200 websites – $50
    Oxwall 6800 websites – $30
    Parallels Plesk Sitebuilder 174216 websites – $80
    php 14367 websites – $50
    php Link 2298 websites – $30
    phpBB 24400 websites – $30
    PHP-Fusion 2596 websites – $30
    PHPMelody 2365 websites – $30
    PHP-Nuke 2489 websites – $30
    PHPShop 2667 websites – $30
    PHPWeb 29789 websites – $50
    PHPWind 4032 websites – $30
    Plone 84962 websites – $50
    PowerEasy 1697 websites – $30
    Prestashop 434100 websites – $80
    Question2Answer 5598 websites – $30
    R 296498 websites – $80
    ReadyScript 6487682 websites – $80
    S.Builder 394367 websites – $80
    Shopify 6093709 sites websites – $400
    Shoutbox 145564 websites – $80
    SilverStripe 31721 websites – $50
    Simpla 17429 websites – $50
    Sitecore 74861 websites – $50
    Sitefinity 4183 websites – $30
    SMF 8111 websites – $30
    SocialGO 54267 websites – $50
    SPIP 28269 websites – $50
    Squarespace 1098231 websites – $100
    StoreLand 8257 websites – $30
    SupeSite 12367 websites – $50
    Textpattern 10900 websites – $30
    TikiWiki 1446 websites – $30
    Tilda 47396 websites – $50
    Tumblr 302357 websites – $80
    TYPO3 845009 websites – $80
    Umbraco 146064 websites – $80
    UMI.CMS 13191 websites – $50
    VamShop 1737 websites – $30
    vBulletin 14460 websites – $30
    Volusion 16006 websites – $50
    WallpaperSiteScript 2811 websites – $30
    Weebly 191753 websites – $80
    Wix 3379081 sites websites – $250
    WooCommerce 4459525 websites – $310
    Wordpress 35354537 websites – $650
    XenForo 21105 websites – $30
    XOOPS 20467 websites – $50
    XpressEngine 8565 websites – $30
    Zen Cart 26524 websites – $30

    Country:

    .ae 200462 websites UAE – $50
    .ae 1820 websites International zone UAE:.com .net .biz .info .name .tel
    .ag 11931 websites Antigua and Barbuda – $50
    .ai 33130 websites Anguilla – $50
    .am 21995 websites Armenia – $50
    .am 1684 websites International zone Armenia:.com .net .biz .info .name .tel
    .ar 782608 websites Argentina – $80
    .ar 75496 websites International zone Argentina:.com .net .biz .info .name .tel .mobi .asia-$50
    .ar.com 135 websites – $30
    .at 1356722 websites Austria – $100
    .at 181907 websites International zone Austria :.com .net .biz .info .name
    .au 2432174 websites Australia – $150
    .au 461279 websites International zone Australia:.com .net .biz .info .name
    .az 17855 websites Azerbaijan – $50
    .az 2036 websites International zone Azerbaijan:.com .net .biz .info .name .tel .mobi .asia-$30
    .ba 15725 websites Bosnia and Herzegovina – $30
    .ba 2291 websites international zone Bosnia and Herzegovina:.com.net.biz.info.org.name.tel.mobi.asia-$30
    .be 1349658 websites Belgium – $100
    .be 1056248 websites International zone Belgium:.com .net .biz .info .name
    .bg 54418 websites Bulgaria – $50
    .bg 50685 websites International zone Bulgaria:.com .net .biz .info .name
    .bo 2602 websites Bolivia – $30
    .bo 29415 websites International zone Bolivia:.com .net .biz .info .name .tel .mobi .asia-$50
    .br 3205100 websites Brazil – $200
    .br 1230078 websites International zone Brazil:.com .net .biz .info .name .
    .by 99148 websites Belarus – $50
    .by 1574 websites International zone Belarus:.com .net .biz .info .name .tel
    .ca 2587463 websites Canada – $150
    .ca 288395 websites International zone Canada:.com .net .biz .info .name
    .cc 436396 websites – $80
    .cc 1920589 websites Cocos Keeling Islands- $150
    .cf 2461460 websites Central African Republic – $150
    .cg 526 websites Congo – $30
    .ch 1629450 websites Switzerland – $100
    .ch 205292 websites International zone Switzerland:.com .net .biz .info .name .tel .mobi .asia-$50
    .ci 5794 websites Cote d’Ivoire – $30
    .ci 112 websites International zone Cote d’Ivoire:.com .net .biz .info .name
    .cl 590401 websites Chile – $80
    .cl 65996 websites International zone Chile:.com .net .biz .info .name .tel .mobi .asia-$50
    .cm 29221 websites Cameroon- $50
    .cn 23160610 websites China – $600
    .cn 1372416 websites International zone China:.com .net .biz .info .name .tel .mobi .asia-$100
    .co 1878923 websites Colombia – $100
    .co 10854 websites International zone Colombia:.com .net .biz .info .name .tel .mobi .asia-$30
    .cx 15753 websites Christmas Island – $50
    .cy 11092 websites Cyprus – $50
    .cy 744 websites International zone Cyprus:.com .net .biz .info .name .tel .mobi .asia-$30
    .cz 1001208 websites Czech Republic – $100
    .cz 193400 websites International zone Czech Republic:.com .net .biz .info .name .tel .mobi .asia-$50
    .de 15078512 websites Germany – $350
    .de 3894156 websites International zone Germany:.com .net .biz .info .name .tel .mobi .asia-$150
    .dk 1319155 websites Denmark – $100
    .dk 148164 websites International zone Denmark:.com .net .biz .info .name .tel .mobi .asia-$50
    .dm 23318 websites Dominica – $50
    .dn.ua 1835 websites – $30
    .do 5255 websites Dominican Republic- $30
    .dy.fi 1112 websites – $30
    .dz 5382 websites Algeria – $30
    .ec 11731 websites Ecuador – $50
    .ec 2897 websites International zone Ecuador:.com .net .biz .info .name .tel .mobi .asia-$30
    .ee 131791 websites Estonia- $50
    .ee 10490 websites International zone Estonia:.com .net .biz .info .name .tel .mobi .asia-$30
    .es 1509048 websites Spain – $100
    .es 683845 websites International zone Spain:.com .net .biz .info .name .tel .eu 3046076 websites Europe – $150
    .eu 633384 websites International zone Europe:.com .net .biz .info .name .fi 361111 websites Finland – $80
    .fi 69631 websites International zone Finland:.com .net .biz .info .name .fr 2810983 websites France – $150
    .fr 639546 websites International zone France:.com .net .biz .info .name .ge 24598 websites Georgia – $50
    .ge 1676 websites International zone Georgia:.com .net .biz .info .name .tel .gf 996 websites French Guiana – $30
    .gg 10528 websites Guernsey islands – $50
    .gh 703 websites Ghana – $30
    .gi 981 websites Gibraltar – $30
    .gp 2044 websites Guadeloupe – $30
    .gq 2027422 websites Equatorial Guinea – $100
    .gr 327215 websites Greece – $80
    .gr 57984 websites International zone Greece:.com .net .biz .info .name .tel .mobi .asia-$150
    .gt 15351 websites Guatemala – $50
    .hk 116093 websites Hong Kong – $50
    .hm 335 websites Heard & McDonald islands – $30
    .hn 4732 websites Honduras – $30
    .hr 75736 websites Croatia – $50
    .hr 16592 websites International zone Croatia:.com .net .biz .info .name .tel .mobi .asia
    .ht 1299 websites Haiti – $30
    .hu 53940 websites International zone Hungary:.com .net .biz .info .name .tel .mobi .asia-$50
    .ie 209620 websites Ireland – $50
    .ie 49861 websites International zone Ireland:.com .net .biz .info .name .il 196266 websites Israel – $80
    .il 38537 websites International zone Israel:.com .net .biz .info .name .tel .in 1157482 websites India – $100
    .in 266179 websites International zone India:.com .net .biz .info .name .tel .io 496216 websites British Indian Ocean – $80
    .iq 2401 websites Iraq – $30
    .ir 574258 websites Iran – $80
    .ir 15487 websites International zone Iran:.com .net .biz .info .name .tel .mobi .asia
    .it 2410105 websites Italy – $150
    .it 954040 websites International zone Italy:.com.net.biz.info.org.name.tel.mobi.asia-$100
    .je 3016 websites Ireland – $30
    .jp 1825219 websites Japan – $150
    .jp 4683252 websites International zone Japan:.com.net.biz.info.org.name.tel.mobi.asia-$200
    .jp.net 5170 websites – $30
    .ke 14677 websites Kenya – $50
    .kg 10350 websites Kyrgyzstan – $30
    .kg 664 websites International zone Kyrgyzstan:.com .net .biz .info .name .tel .mobi .asia-$30
    .ki 79 websites Kiribati – $30
    .kn 3211 websites Saint Kitts and Nevis – $30
    .kr 272463 websites Korea- $80
    .kw 484 websites Kuwait – $30
    .ky 5783 websites Cayman Islands – $30
    .kz 113180 websites Kazakhstan – $80
    .kz 5876 websites International zone Kazakhstan:.com .net .biz .info .name .tel .mobi .asia-$30
    .lc 1121 websites Saint Lucia – $30
    .lk 32654 websites Sri Lanka – $30
    .lt 137666 websites Lithuania- $50
    .lt 27710 websites International zone Lithuania:.com .net .biz .info .name .tel .mobi .asia- $50
    .lu 74322 websites Luxembourg – $50
    .lu 4125 websites International zone Luxembourg:.com .net .biz .info .name .tel .mobi .asia-$30
    .lv 86593 websites Latvia – $50
    .lv 8887 websites International zone Latvia:.com .net .biz .info .name .tel .mobi .asia-$30
    .ma 59103 websites Morocco – $50
    .mc 3046 websites Monaco – $30
    .md 16730 websites Moldova – $50
    .md 1293 websites International zone Moldova:.com .net .biz .info .name .tel .mobi .asia-$30
    .me 761596 websites Montenegro – $80
    .me 86897 websites International zone Montenegro:.com .net .biz .info .name .tel .mobi .asia-$50
    .mg 3715 websites Madagascar- $30
    .mk 13266 websites Macedonia – $50
    .ml 2158835 websites Mali – $100
    .mn 17044 websites Mongolia – $50
    .mq 1112 websites Martinique (French) – $30
    .mr 776 websites Mauritania – $30
    .ms 7265 websites Montserrat – $30
    .mt 1402 websites Malta – $30
    .mu 6475 websites Maurifius – $30
    .mv 1996 websites Maldives – $30
    .mw 8579 websites Malawi – $30
    .mx 670901 websites Mexico- $80
    .mx 174571 websites International zone Mexico:.com .net .biz .info .name .tel .mobi .asia-$50
    .my 143039 websites Malaysia- $50
    .na 1094 websites – $30
    .nc 3497 websites New Coledonia (French) – $30
    .nl 3925784 websites Netherlands – $200
    .nl 1019697 websites International zone Netherlands:.com .net .biz .info .name .tel .mobi .asia-$100
    .no 620882 websites Norway – $80
    .no 74318 websites International zone Norway:.com .net .biz .info .name .tel .mobi .asia-$50
    .nu 255161 websites Niue- $50
    .nz 593127 websites New Zealand – $80
    .om 1701 websites Oman – $30
    .pe 83224 websites Peru – $50
    .pe 59157 websites International zone Peru:.com .net .biz .info .name .tel .mobi .asia-$50
    .pk 44464 websites Pakistan – $50
    .pl 1795299 websites Poland – $100
    .pl 327587 websites International zone Poland:.com .net .biz .info .name .tel .mobi .asia-$50
    .pr 1358 websites Puerto Rico – $30
    .pt 263136 websites Portugal – $80
    .pt 17691 websites International zone Portugal:.com .net .biz .info .name .tel .mobi .asia-$50
    .py 5593 websites Paraguay – $30
    .py 653 websites International zone Paraguay:.com .net .biz .info .name .tel .mobi .asia-$30
    .re 15089 websites Reunion (French) – $50
    .ro 424401 websites Romania – $80
    .ro 42046 websites International zone Romania:.com .net .biz .info .name .tel .mobi .asia-$50
    .rs 85503 websites Serbia – $50
    .ru 5025331 websites Russian – $250
    .ru 514668 websites International zone Russian:.com .net .biz .info .name .tel .mobi .asia-$80
    .rw 3806 websites Rwanda – $30
    .sa 20421 websites Saudi Arabia- $50
    .sa 5064 websites International zone Saudi Arabia:.com .net .biz .info .name .tel .mobi .asia – $30
    .sc 4442 websites Seychelles- $30
    .se 1491677 websites Sweden – $100
    .se 293316 websites International zone Sweden:.com .net .biz .info .name .tel .mobi .asia-$50
    .sg 150351 websites Republic Of Singapore – $50
    .sh 7560 websites Saint Helena – $30
    .si 103778 websites Slovenia- $50
    .si 12879 websites International zone Slovenia:.com .net .biz .info .name .tel .mobi .asia-$50
    .sk 414198 websites Slovakia- $80
    .sk 31572 websites International zone Slovakia:.com .net .biz .info .name .tel .mobi .asia-$50
    .sm 8897 websites San Marino – $30
    .sn 344 websites International zone Senegal:.com .net .biz .info .name .tel .mobi .asia-$30
    .sn 4465 websites Senegal – $30
    .sr 580 websites Suriname – $30
    .sv 8432 websites Salvador- $30
    .sx 2901 websites Sint Maarten – $30
    .sy 2972 websites Syria – $30
    .sz 321 websites Swaziland – $30
    .tc 16384 websites Turks and Caicos Islands- $50
    .tf 19841 websites French Sauthern Territory – $50
    .tg 1230 websites Togo – $30
    .th 22368 websites Kingdom Of Thailand- $50
    .tj 6874 websites Tajikistan- $30
    .tj 34 websites International zone Tajikistan:.com .net .biz .info .name .tel .mobi .asia
    .tk 20085806 websites Tokelau – $500
    .tl 2748 websites East Timor – $30
    .tm 6395 websites Turkmenistan- $30
    .tm 44 websites International zone Turkmenistan:.com .net .biz .info .name .tel .mobi .asia
    .tr 243347 websites Turkey – $80
    .tr 138818 International zone Turkey:.com .net .biz .info .name .tel .mobi .asia -$50
    .tt 1017 websites Trinidad & Tobago – $30
    .ua 553216 websites Ukraina – $80
    .ua 147202 websites International zone Ukraine:.com .net .biz .info .name .tel .mobi .asia-$50
    .ug 3806 websites Uganda – $30
    .ug 720 websites International zone Uganda:.com .net .biz .info .name .tel .mobi.asia-$30
    .uk 5975887 websites United Kingdom – $250
    .uk 3304606 websites International zone United Kingdom:.com .net .biz .info .name .tel .mobi .asia-$150
    .us 3139563 websites USA – $200
    .us 578927 websites International zone USA:.com .net .biz .info .name .tel .mobi .asia-$80
    .uy 15571 websites Uruguay – $50
    .uy 31812 websites International zone Uruguay:.com .net .biz .info .name .tel .mobi .asia-$30
    .uz 38357 websites Uzbekistan – $50
    .uz 365 websites International zone Uzbekistan:.com .net .biz .info .name .tel .mobi .asia
    .vc 18641 websites Saint Vincent & Grenadines – $50
    .ve 14015 websites Venezuela – $50
    .ve 2898 websites International zone Venezuela:.com .net .biz .info .name .tel .mobi .asia – $30
    .vg 8389 websites Virgin Islands (British) – $50
    .vi 109 websites Virgin Islands (US) – $30
    .vn 436005 websites Vietnam – $80
    .vn 161855 websites International zone Vietnam:.com .net .biz .info .name .tel .mobi .asia – $50
    .vu 1051 websites Vanuatu – $30
    .wf 1133 websites Wallis & Futuna Islands – $30
    .ws 99308 websites Samoa – $80
    .ye 18 websites Yemen – $30
    .yt 2004 websites Mayotte – $30
    .za 1008308 websites South Africa – $100

    回复

contactctiefp进行回复 取消回复

邮箱地址不会被公开。