问题标签 [ace]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 多线程编程 - ACE_thread_t 或 ACE_Task
我想使用 ACE 编写一个多线程进程(在 linux 上)。在c++中实现线程时使用ACE_Task和ACE_thread_t有什么区别
c++ - ACE Reactor 框架中单个事件的多个处理程序
我正在设计一个接受传入连接的服务器,客户端偶尔会发送服务器需要响应的请求,但大多数情况下服务器会检测到一些事件并将事件广播给所有连接的客户端。基本上我所拥有的是:
这里的问题是,每当设置 hEvent 时,只有 MyService 的第一个实例会调用它的 handle_signal。看起来一个事件只允许一个处理程序,一个处理程序可以处理多个事件。如何让多个处理程序处理一个事件?
如果我使事件手动重置事件,那么只要设置了事件,所有处理程序都会调用它们的 handle_signal。但这真的不是我想要的——我不希望客户多次收到同一事件的通知。
我通过使用信号量而不是事件来实现我的目标:
并使 MyService 的构造函数和析构函数计算连接客户端的数量,以便我可以正确释放信号量的次数:
这似乎是错误的,闻起来很像黑客。ACE有没有正确的方法来做到这一点?
api - 变量“ACE_Atomic_OpAcsHcs::Cache::cnt" 具有初始化程序但类型不完整
我正在将我的 Windows 代码移植到 linux。当我使用 ACE_Atomic_Op api 时,编译器会抛出一些错误,如下所示
我的代码如下:
在 Cache.h 文件中我有
在 cache.cpp 我将 cnt 声明为
这在windows中工作正常,但在linux中抛出错误
谁能告诉我问题是什么?
提前致谢
c++ - 我应该使用 ace_select_reactor 还是 ace_dev_poll_reactor
我不知道选择哪个反应器使用 ace_select_reactor 或 ace_dev_poll_reactor。反应器用于在使用 unix 域套接字的服务器上侦听传入的打开连接事件
memory-management - 通用内存分配器
我想创建一个内存管理器/分配器,它分配任何指定大小的内存。我曾尝试使用 Boost 和 ACE 内存分配器,但它们只分配特定类型的数据
如果ACE_cached_allocator
分配器是int
类型,我们只能为 分配内存int
,不能为char
。
示例:- 我可以询问任何大小的内存,例如 intchar
或任何class/structure
请为此类应用程序建议任何库
linux - 用于 ACE/TAO 静态版本的 rpm
我需要 ACE/TAO 框架来构建我的应用程序。
我在这个页面找到了安装这些的 RPM。
这些确实安装了该框架的共享库。
不幸的是,我找不到 ACE/TAO 的 STATIC 库,而这些正是我需要的。
你们中有人提出或找到了静态库的一些 rpm 吗?
我真的很想避免使用MPC
该框架的主要构建工具。
我正在使用红帽企业 6.3
c - 动态库加载:找出未解析符号运行时的简单方法
我正在开发一个大型项目,该项目在运行时使用 ACE_DLL::open 加载动态库。
由于未解析的符号,库已定位并尝试打开但在 mmap 上失败(下面是 strace )。我确定这是因为未解析的符号,并且通过运行 nm 我可以获得所有未解析符号的列表。问题是在编译时有大量未解析的符号应该在运行时解决,所以 nm 不是很有帮助,因为我需要一个一个地遍历所有符号。
有没有一种聪明的方法来找出导致.so被加载的确切原因
visual-studio - 如何删除由 Makefile Project Creator 为 VS9 定义的预处理器标志
我正在尝试使用 Visual Studio 9 的 Makefile Project Creator (MPC) 构建静态库(.lib 配置)。我有为 GNU 构建环境编写的配置 (*.mpc) 文件,但我正在尝试编译VS9 跨平台。
我想ACE_AS_STATIC_LIBS;TAO_AS_STATIC_LIBS;
从生成的解决方案文件中删除预处理器标志,但我不知道要在 MPC 模板文件 (*.mpt) 中更改什么。
我试图通过目录grep
中的a 找到标志,$(ACE_ROOT)/MPC
但搜索没有结果。
c++ - socket recv 消耗 CPU
我们的一位产品用户声称在我们的产品socket recv
中消耗了非常高的 CPU。我们正在使用ACE
. 我在本地尝试但无法重现该问题。socket recv
我正在寻找会消耗高的可能原因CPU
。
c++ - boost::mutex::lock 异常,错误号为 22
我正在使用 boost::mutex 类在一个资源上同步 2 个线程。当我调用以下boost:mutex:lock()
函数时出现异常:
res = 22,即 EINVAL。当我查看手册页时,pthread_mutex_lock
我可以看到该函数在以下情况下不会 EINVAL:
EINVAL:mutex 指定的值不引用已初始化的互斥对象。
此选项不相关,因为 boost:mutex 构造函数初始化 pthread_mutex_t。
EINVAL:互斥体是使用值为 PTHREAD_PRIO_PROTECT 的协议属性创建的,并且调用线程的优先级高于互斥体的当前优先级上限。
这个选项更合理。当您查看 boost::mutex custructor 中 pthread_mutex_t 的初始化时,您会看到:
这意味着 boost 使用pthread_mutexattr_t
互斥锁的默认值。我的问题是:
包含协议属性的默认值是否
pthread_mutexattr_t
具有 PTHREAD_PRIO_PROTECT 值?如果是你,我的问题会变得最糟糕,因为我依赖于尝试锁定互斥锁的线程优先级。我的线程是由创建的
ACE_Task_Base::activate
。你能告诉我ace默认线程优先级是什么吗?
我在linux redhat上运行...