Linux下同步异步机制以及高性能服务器的相关话题

同步线程与异步线程的比较?(一样适合于同步进程和异步进程) 进程和线程的同步是指:程序的执行顺序彻底由代码序列决定。 同步线程的特色: 代码逻辑简单,适合高并发量,可是效率低,实时性差 异步线程的特色: 效率高、实时性强,可是代码逻辑复杂,不易于维护控制,不适合高并发量。 总之,同步线程与异步线程时互补关系。 所以,对于服务器这种须要高并发,实时性好的程序,必须采用线程的同步异步的结合 即,半同步、半异步  提升服务器性能的其余建议? ------------建议1---------------  空间换时间:池的概念 池子是一系列系统资源的集合。 使用池子有什么好处呢? 通常而言,系统资源由系通通一管理(分配或释放)。进程的池子 (一系列系统资源的集合)在进程建立的同时建立好,当进程须要池子中的 资源时,不用访问系统内核来分配系统资源,而是直接从池子中取。同理,当 不使用时,将资源归还到池子中,而不是系统。这避免了对系统内核的频繁访问 由于,系统调用存在开销。 池子中的初始资源数量的分配策略? 1分配足够多的资源。 2分配必定数量的资源,当不够用时,再次从系统中获取一些资源并入池子中。 常见的池子有哪些? 内存池、进程池、线程池、链接池等。进程池和线程池时用于并发编程的伎俩  进程池和线程池:进程建立之初,咱们能够生产出一些列的进程或线程,当服务器 须要某个工做进程或工做线程来处理新到来的客户请求时,就从进程池或者线程池 中选择一个执行实体来处理。而无需频繁使用fork或pthread_create来建立新的工做 进程或线程。当处理完毕,又归还给池子。 链接池:当服务器程序的某些逻辑单元须要频繁使用服务器程序与数据库程序的链接 时,咱们能够在进程建立之初,建立一系列的服务器与数据库链接的集合。当某个 逻辑单元须要使用服务器链接数据库时,从链接池中选择一个链接实体使用,使用 完毕又归还到链接池。 ------------建议2---------------  避免没必要要的数据复制: 尤为是内核数据和应用程序代码数据之间的复制。 用户代码之间的数据复制也应避免。好比,工做进程之间的 数据通讯,不该该采用管道,消息队列,而应该能使用共享内存 来进行通讯,这样能够避免数据的复制。   ------------建议3---------------  充分考虑上下文切换(即工做进程或工做线程的数量不宜过多, 通常而言不能多于CPU的数量)和锁。通常而言,锁适用于 并发环境下对共享资源进行保护的措施。可是,要注意两点: 有条件时,应避免使用锁,即便非要使用锁,也应该尽量减小 加锁的粒度。      
相关文章
相关标签/搜索