阅读更多

1顶
1踩

开源软件

HP-Socket

    HP-Socket提供以下几类组件,详细内容请参考《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 宏重新编

hp-socket for android

hp-socket for android

二、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

hp ssl

新增 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

hp http

新增 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 条 请登录后发表评论

发表评论

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

相关推荐

  • Java线程唤醒与阻塞

    阻塞指的是暂停一个线程的执行以等待某个条件发生(如某资源就绪),学过操作系统的同学对它一定已经很熟悉了。Java 提供了大量方法来支持阻塞,下面让我们逐一分析。  1. sleep() 方法:sleep() 允许 指定以毫秒为单位的一段时间作为参数,它使得线程在指定的时间 内进入阻塞状态,不能得到CPU 时间,指定的时间一过,线程重新进入可执行状态。   典型地,sleep() 被用在等待某个资

  • 【面试】Java线程阻塞和唤醒的几种方式?

    notify/notifyAll()方法只是解除了等待线程的阻塞,并不会马上释放监视器锁,而是在相应的被synchronized关键字修饰的同步方法或同步代码块执行结束后才自动释放锁。调用wait()方法后,线程将被阻塞,wait()方法将会释放当前持有的监视器锁(monitor),直到有线程调用。需要使用lock对象的newCondition()方法获得Condition条件对象(可有多个)。这里有一个许可证的概念,许可不能累积,并且最多只能有一个许可,只有1和0的区别。可实现公平锁,默认是非公平锁。

  • Java多线程编程(四)- 阻塞队列,生产者消费者模型,线程池

    就和常量池类似,在Java程序构建时候准备好,等程序运行时直接加载到内存中使用。,弥补构造方法的缺陷,但是在构造方法上有时候无法重载,如果必须要系统类型的参数时。注:Java线程池中有几个线程任务多时自动创建出多个线程,任务少时会销毁。put 方法用于阻塞式的⼊队列, take ⽤于阻塞式的出队列.阻塞队列是⼀种特殊的队列. 也遵守 "先进先出" 的原则。核心线程在线程池创建时就创建,一直到线程池销毁才会跟着销毁。线程任务多时自动创建出多个线程,任务少时会销毁。让我们高效的创建销毁线程,

  • 面试 LockSupport.park()会释放锁资源吗?

    (手机横屏看源码更方便) 引子 大家知道,我最近在招人,今天遇到个同学,他的源码看过一些,然后我就开始了AQS连环问。 我:说说AQS的大致流程? 他:AQS包含一个状态变量,一个同步队列……balabala……互斥锁balabala,共享锁balabala…… 我:AQS中除了同步队列,还有什么队列? 他:还有个Condition,Condition中有个条件队列…… 我:条件队列和同步队...

  • 【Java并发编程】:守护线程与线程阻塞的四种情况

    守护线程 Java中有两类线程:User Thread(用户线程)、Daemon Thread(守护线程) 用户线程即运行在前台的线程,而守护线程是运行在后台的线程。守护线程作用是为其他前台线程的运行提供便利服务,而且仅在普通、非守护线程仍然运行时才需要,比如垃圾回收线程就是一个守护线程。当VM检测仅剩一个守护线程,而用户线程都已经退出运行时,VM就会退出,因

  • Java:线程如何阻塞

    Java:线程如何阻塞

  • mac连接sftp 服务器

    2.sftp -P 22 username@192.168.3.1 回车。5.下载好之后:lpwd 查看本地默认下载目录,找到下载文件。4. 输入 get filename 下载对应文件。3.ls 查看文件, cd 进入某目录。3.根据提示输入密码,连接到服务器。

  • Java线程阻塞和唤醒的几种方式

    Object类自带的方法 使用wait()方法来阻塞线程,使用notify()和notifyAll()方法来唤醒线程。 调用wait()方法后,线程将被阻塞,wait()方法将会释放当前持有的监视器锁(monitor),直到有线程调用notify/notifyAll()方法后方能继续执行。 notify/notifyAll()方法只是解除了等待线程的阻塞,并不会马上释放监视器锁,而是在相应的被synchronized关键字修饰的同步方法或同步代码块执行结束后才自动释放锁。 默认使用非公平锁,无法修改。 缺点

  • Java中什么方法导致线程阻塞

    一、为什么引入线程阻塞机制? 为了解决对共享存储区的访问冲突,Java 引入了同步机制,现在让我们来考察多个线程对共享资源的访问,显然同步机制已经不够了,因为在任意时刻所要求的资源不一定已经准备好了被访问,反过来,同一时刻准备好了的资源也可能不止一个。为了解决这种情况下的访问控制问题,Java 引入了对阻塞机制的支持。 阻塞指的是暂停一个线程的执行以等待某个条件发生(如某资源就绪),学过操作系...

  • java 等待和阻塞_Java线程阻塞方法sleep()和wait()精炼详解

    版权声明:因为个人水平有限,文章中可能会出现错误,如果你觉得有描述不当、代码错误等内容或者有更好的实现方式,欢迎在评论区告诉我,即刻回复!最后,欢迎关注博主!谢谢 https://blog.csdn.net/weixin_41101173/article/details/79889464一、前期基础知识储备sleep()和wait()方法都是Java中造成线程阻塞的方法。感兴趣的读者可以参见笔者之...

  • Java 并发编程 四(线程中断、阻塞、唤醒)

    首先,一个线程不应该由其他线程来强制中断或停止,而是应该由线程自己自行停止,自己来决定自己的命运,所以,都已经被废弃了其次,在Java中没有办法立即停止一条线程,然而停止线程却显得尤为重要,如取消一个耗时操作。因此,Java提供了一种用于停止线程的协商机制----中断,也即中断标识协商机制中断只是一种协作协商机制,Java没有给中断增加任何语法,中断的过程完全需要程序员自行实现。

  • 线程发生阻塞,怎么唤醒线程?

    有4中阻塞情况,对应的解决办法分别是: 1. 执行 sleep(int millsecond)方法,使当前线程休眠,进入阻塞状态。 ...

  • Java线程阻塞

    阻塞指的是暂停一个线程的执行以等待某个条件发生(如某资源就绪),学过操作系统的同学对它一定已经很熟悉了。Java 提供了大量方法来支持阻塞,下面让我们逐一分析。  1. sleep() 方法:sleep() 允许 指定以毫秒为单位的一段时间作为参数,它使得线程在指定的时间内进入阻塞状态,不能得到CPU 时间,指定的时间一过,线程重新进入可执行状态。  典型地,sleep() 被用在等待某个资源就绪

  • Java 并发编程--阻塞队列和线程池

    1)支持阻塞的插入方法:意思是当队列满时,队列会阻塞插入元素的线程,直到队列不满。2)支持阻塞的移除方法:意思是在队列为空时,获取元素的线程会等待队列变为非空。在并发编程中使用生产者和消费者模式能够解决绝大多数并发问题。该模式通过平衡生产线程和消费线程的工作能力来提高程序整体处理数据的速度。在线程世界里,生产者就是生产数据的线程,消费者就是消费数据的线程。在多线程开发中,如果生产者处理速度很快,而消费者处理速度很慢,那么生产者就必须等待消费者处理完,才能继续生产数据。

  • Java中的多线程之阻塞队列

    阻塞队列是在普通的(先进先出)队列的基础上,做出了扩充~~(标准库中原有的队列Queue和其子类,默认都是线程不安全的。1)线程安全2)具有阻塞特性a)如果队列为空,进行出队列操作,此时就会出现阻塞;一直阻塞到其它线程往队列里添加元素为止。b)如果队列为满,进行入队列操作,此时也会出现阻塞;一直阻塞到其它线程从队列里取走元素为止。

  • JavaEE 初阶(11)——多线程9之“阻塞队列”

    本篇主要是一些“阻塞队列”的相关知识,讲解了阻塞队列在“生产者消费者模型”中的应用

  • 5. 线程的状态,和线程的阻塞方式

    一、线程的状态有6种   1. 初始(NEW):新创建了一个线程对象,但还没有调用start()方法。   2. 运行(RUNNABLE):Java线程中将就绪(ready)和运行中(running)两种状态笼统的称为“运行”。     线程对象创建后,其他线程(比如main线程)调用了该对象的start()方法。该状态的线程位于可运行线程池中,等待被线程调度选中,获取CPU的使用...

  • Java多线程案例——阻塞队列

    Java多线程案例——阻塞队列

  • java多线程——阻塞与唤醒

    三、java线程的阻塞及唤醒 1. sleep() 方法: sleep(…毫秒),指定以毫秒为单位的时间,使线程在该时间内进入线程阻塞状态,期间得不到cpu的时间片,等到时间过去了,线程重新进入可执行状态。(暂停线程,不会释放锁)//测试sleep()方法 class Thread7 implements Runnable{ @Override public void run()

  • Java 线程阻塞、中断及优雅退出

    线程阻塞一个线程进入阻塞状态的原因可能如下(已排除Deprecated方法):sleep()sleep()使当前线程进入停滞状态(阻塞当前线程),让出CUP的使用、目的是不让当前线程独自霸占该进程所获的CPU资源,以留一定时间给其他线程执行的机会;当在一个Synchronized块中调用Sleep()方法是,线程虽然休眠了,但是对象锁并没有被释放,其他线程无法访问这个对象(即使睡着也持有对象锁)。w

Global site tag (gtag.js) - Google Analytics