高性能跨平台通信框架 hp-买球官网平台

1顶
1踩

  • 项目买球官网平台主页 : 
  • 开发文档 :
  • 下载地址 :
  • qq group: ,

    hp-socket提供以下几类组件,详细内容请参考《》:

  • server:基于iocp / epoll通信模型,并结合缓存池、私有堆等技术实现高效内存管理,支持超大规模、高并发通信场景。
  • agent:agent组件实质上是multi-client组件,与server组件采用相同的技术架构。一个agent组件对象可同时建立和高效处理大规模socket连接。
  • client:基于event select / poll通信模型,每个组件对象创建一个通信线程并管理一个socket连接,适用于小规模客户端场景。

v5.4.1 更新

一、加入线程池公共组件

  1. 加入 ihpthreadpool 线程池公共组件
  2. ihpthreadpool 主要方法
    1) start:启动线程池
    2) stop:关闭线程池
    3) submit:提交任务
    4) adjustthreadcount:调整线程池大小

二、接口更新

  1. iagent 接口的 connect() 方法增加参数 uslocalport,连接时可绑定本地端口
  2. iclient 接口的 start() 方法增加参数 uslocalport,连接时可绑定本地端口
  3. iclient/iagent/iserver 接口增加方法 isconnected(),检测是否有效连接

三、其它更新

  1. 修复已知问题
  2. 性能优化

v5.3.2 更新

一、linux版本更新

  1. android ndk 支持:所有组件源码均可使用android ndk编译,在android平台上运行
  2. bug修复:5.3.1版本中用dlopen()动态加载共享库失败
  3. 增加 _iconv_disabled 预编译宏用于关闭 iconv 库功能
  4. 增加 _zlib_disabled 预编译宏用于关闭 zlib 库功能
  5. 如果想去除 ssl 或 http 组件,可以分别定义 _ssl_disabled 或 _http_disabled 宏重新编

二、windows版本更新

  1. 修复 c# sdk 关于 ssl 初始化失败 bug
  2. 增加 _zlib_disabled 预编译宏用于关闭 zlib 库功能

三、其它更新

  1. http-parser 解析器升级到 2.8.1 版本
  2. openssl 版本升级到 1.1.0h
  3. jemalloc 版本升级到 5.1.0 版本

v5.2.1 更新

一、发布包调整

  1. 版本号修订:windows 和 linux 发行版使用统一版本号
  2. 发布文件不再区分非 ssl dll 和 ssl dll,统一为 hpsocket dll 和 hpsocket4c dll
  3. 发布文件默认包含 ssl 和 http 组件
  4. 如果想去除 ssl 或 http 组件,可以分别定义 _ssl_disabled 或 _http_disabled 宏重新编

新增 linux ssl 组件

  1. server: ssl server, ssl pull server, ssl pack server
  2. agent: ssl agent, ssl pull agent, ssl pack agent
  3. client: ssl client, ssl pull client, ssl pack client

新增 linux http 组件

  1. server: http server, https server
  2. agent: http agent, http agent
  3. client: http client, http client, http sync client, https sync client

新增 linux demo

  1. testecho-ssl: (src) ssl simple test echo server/agent/client
  2. testecho-ssl-pfm: (so) ssl performance test echo server/agent/client
  3. testecho-ssl-pull: (so) ssl pull echo server/agent/client
  4. testecho-ssl-pack: (4c so) ssl pack echo server/agent/client
  5. testecho-http: (src) http simple test echo server/agent/client/sync-client
  6. testecho-http-4c: (4c so) http simple test echo server/agent/client/sync-client
1
1
评论 共 0 条 请登录后发表评论

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • 文章目录线程可能被阻塞如果线程在每次迭代时都阻塞 线程可能被阻塞 子线程sleep的过程中, 给出中断信号的demo 当子线程正在休眠的过程中, 去进行线程的中断. 因此主线程要等子线程执行到 thread.sleep(1000);这一行代码,因此在main线程中, 给出了thread.sleep(500); public class rightwaystopthreadwithsleep { public static void main(string[] args) throws inte

  • 最近在开发swing项目时,由于使用了多线程做一些对文本文件进行读写等io操作,运行时一到该线程运行时,自动中止或中断了,经过半天测试以及debug发现问题所在。

  •  为什么thread.stop不推荐使用?因为它本质上是不安全的。停止线程会导致它解锁所有已锁定的监视器。(当threaddeath异常在堆栈中传播时,监视器被解锁。)如果之前由这些监视器保护的对象中的任何一个处于不一致状态,则其他线程现在可以以不一致的状态查看这些对象。据称这些物体被 损坏。当线程操作受损对象时,可能导致任意行为。这种行为可能微妙且难以检测,或者可能会发音。与其他未经检查的异常不...

  • 线程堵塞 堵塞状态是前述四种状态中最有趣的,值得我们作进一步的探讨。线程被堵塞可能是由下述五方面的原因造 成的: (1) 调用sleep(毫秒数),使线程进入“睡眠”状态。在规定的时间内,这个线程是不会运行的。 (2) 用suspend()暂停了线程的执行。除非线程收到resume()消息,否则不会返回“可运行”状态。 (3) 用wait()暂停了线程的执行。除非线程收到nofify()...

  • 线程对象属于一次性消耗品,一般线程执行完run方法之后,线程就正常结束了,线程结束之后就报废了,不能再次start,只能新建一个线程对象。但有时run方法是永远不会结束的。例如在程序中使用线程进行socket监听请求,或是其他的需要循环处理的任务。在这种情况下,一般是将这些任务放在一个循环中,如while循环。当需要结束线程时,如何退出线程呢? 有三种方法可以结束线程: 1. 使用退出标志,使线程正常退出,也就是当run方法完成后线程终止 2. 使用interrupt()方法中断线程 3. 使用st

  • 线程阻塞指的是暂停一个线程的执行以等待某个条件发生(如某资源就绪) 线程阻塞原因 1、线程执行了thread.sleep(int n)方法,线程放弃cpu,睡眠n毫秒,然后恢复运行。 2、线程要执行一段同步代码,由于无法获得相关的同步锁,只好进入阻塞状态,等到获得了同步锁,才能恢复运行。 3、线程执行了一个对象的wait()方法,进入阻塞状态,只有等到其他线程执行了该对象的notify()或notifyall()方法,才可能将其唤醒。 4、线程执行i/o操作或进行远程通信时,会因为等待相关的资源而进入阻塞状

  • 1. 线程在运行的过程中因为某些原因而发生阻塞,阻塞状态的线程的特点是:该线程放弃cpu的使用,暂停运行,只有等到导致阻塞的原因消除之后才回复运行。或者是被其他的线程中断,该线 程也会退出阻塞状态,同时抛出interruptedexception。 导致阻塞的原因有很多种,大致分为三种来讨论,分别是一般线程中的阻塞,socket客户端的阻塞,socket服务器端的阻...

  •   如果线程是因为调用了wait()、sleep()或者join()方法而导致的阻塞,可以中断线程,并且通过抛出interruptedexception来唤醒它;如果线程遇到了io阻塞,无能为力,因为io是操作系统实现的,java代码并没有办法直接接触到操作系统。以下是详细的唤醒方法:   1. sleep() 方法   sleep(毫秒),指定以毫秒为单位的时间,使线程在该时间内进入线程阻塞状态,期间得不到cpu的时间片,等到时间过去了,线程重新进入可执行状态。(暂停线程,不会释放锁)   2.su

  • 最近有小伙伴在工作中遇到了java线程阻塞问题,面对这样的问题,大家束手无策,不知道从何下手,那么今天我们就给大家分享一些关于java避免线程阻塞的方法。阻塞指的是暂停一个java线程同步的执行以等待某个条件发生(如某资源就绪),学过操作系统的同学对它一定已经很熟悉了。java提供了大量方法来支持阻塞,下面让我们逐一分析。1. sleep() 方法:sleep() 允许指定以毫秒为单位的一段时间作...

  • 线程有五种状态,创建、就绪、运行、阻塞、死亡。 阻塞分为三种情况: 1、sleep或join造成的阻塞。sleep的阻塞在等待指定时间后,会重新进入就绪状态等待cpu调用。等待期间不会释放锁资源。join则是被强占的线程等待抢占的线程运行结束或者终止后,重新进入就绪状态。 2、同步阻塞。当多个线程想获取同一个锁资源,且锁资源正在被占用的情况下,其他线程会被jvm放入锁池中等待。 3、wait阻塞。wait属于object类的方法,只能在同步方法或同步代码块中使用。因为wait方法会使该线程释放锁资源,进入阻

  • 一、mac下连接服务器可使用两种方法:1.输入命令:ssh @,例如:ssh [email protected]即可2.打开终端,选择新建远程连接:选择 安全shell(ssh),然后输入ip地址及配置信息二:下载和上传文件1:scp下载:[email protected]:/data/a.java /documents上传:scp /documents/a.java [email protected]

  • mac os x 的ftp/sftp如果你访问过较新版本的mac os x中的“共享首选项”面板,则可能已经注意到不再允许ftp服务器共享文件和文件夹的直接选项。至少没有一个明显的选择,但ftp和sftp服务器功能仍然存在,这两个刚分裂成不同的功能,新版本的os x喜欢sftp而不是ftp。无论你想要使用什么,为其中任何一个设置服务器都非常简单,下面将介绍如何在os x中启动ftp或sftp服务器...

  • 在socket 通讯时候,程序退出时候,socket并未释放,这就导致socket线程被阻塞了 1、同步阻塞: 等待锁的释放 2、等待阻塞: 1、使用thread.sleep 造成的阻塞 结束后进入 runnable 状态 2、使用thread.wait 造成的阻塞,使用notify 或者notifyall 唤醒 3、使用thread.join 造成的阻塞,等待上一个线程进入runnable状态 4、使用threa...

  • 1、join join —— 让一个线程等待另一个线程完成才继续执行。如a线程执行体中调用b线程的join()方法,则a线程被阻塞,直到b线程执行完为止,a才能得以继续执行   2、sleep sleep —— 让当前的正在执行的线程暂停指定的时间,并进入阻塞状态。在其睡眠的时间段内,该线程由于不是处于就绪状态,因此不会得到执行的机会。即使此时系统中没有任何其他可执行的线程,出于sleep()中的线程也不会执行。因此sleep()方法常用来暂停线程执行。 前面有讲到,当调用了新建的线...

  • 原文出处:http://blog.csdn.net/evankaka/article/details/44153709#t9 四、线程状态转换 下面的这个图非常重要!你如果看懂了这个图,那么对于多线程的理解将会更加深刻! 1、新建状态(new):新创建了一个线程对象。 2、就绪状态(runnable):线程对象创建后,其他线程调用了该对象的start()

  • 如果线程是因为调用了wait()、sleep()或者join()方法而导致的阻塞,可以中断线程,并且通过抛出interruptedexception 来唤醒它;如果线程遇到了io 阻塞,无能为力,因为io 是操作系统实现的,java 代码并没有办法直接接触到操作系统。 ...

  • 我开发的worker,每隔几个月线上都会阻塞一次,一直都没查出问题。今天终于了了这个心结。把解决过程总结下和大家分享。     首先用jstack命令打出这个进程的全部线程堆栈。拿到线程dump文件之后,搜索自己的worker名字。 "defaultquartzscheduler_worker-10" prio=10 tid=0x00007f55cd54d800 nid=0x3e2e wait

  • 同事的项目有时候会卡住,重启之后就好了。下面是分析过程 业务线程调用是交由spring管理的,设置好频次,调用完成即结束,一般线程耗时都很少 1、获取耗时较长的线程id top -hpjava进程id 这个是以cpu使用高低对线程进行排序 因为这次的问题不是cpu标高,而是业务跑不下去导致的,所以重点在于查看时间过长的线程,举个粟子: 9335最高,以此为切入点 2、获取栈信息 命令:jstack进程id > jstack.log 3、分析栈内容 把栈信息发到本...

  • 线程阻塞的原因 导致线程阻塞的原因主要由以下几方面。 1、线程执行了thread.sleep(int n)方法,线程放弃cpu,睡眠n毫秒,然后恢复运行。 2、线程要执行一段同步代码,由于无法获得相关的同步锁,只好进入阻塞状态,等到获得了同步锁,才能恢复运行。 3、线程执行了一个对象的wait()方法,进入阻塞状态,只有等到其他线程执行了该对象的notify()或notifyall()方法

global site tag (gtag.js) - google analytics