`
raojl
  • 浏览: 209655 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

(ACE)线程专用存储

阅读更多

关于线程存储 无非就是两种存储方式:一种是 专用存储,另一种是 共享存储

 

在 专用存储 用 ACE 内 的 ACE_TSS模板类可以实现一次全局声明的 专用存储方式。例子

 

 

 

class DataType 

public: 

DataType():data(0){} 

void increment(){ data++;} 

void set(int new_data){ data=new_data;} 

void decrement(){ data--;} 

int get(){return data;} 

 

private: 

int data; 

}; 

 

ACE_TSS<DataType> data; 

 

static void* thread1(void*) //加后等于 15

data->set(10); 

ACE_DEBUG((LM_DEBUG,"(%t)The value of data is %d \n",data->get())); 

for(int i=0;i<5;i++) 

data->increment(); 

ACE_DEBUG((LM_DEBUG,"(%t)The value of data is %d \n",data->get())); 

return 0; 

 

static void * thread2(void*) //加后等于 105

data->set(100); 

ACE_DEBUG((LM_DEBUG,"(%t)The value of data is %d \n",data->get())); 

for(int i=0; i<5;i++) 

data->increment(); 

ACE_DEBUG((LM_DEBUG,"(%t)The value of data is %d \n",data->get())); 

return 0; 

 

int main(int argc, char*argv[]) 

//Spawn off the first thread 

ACE_Thread_Manager::instance()->spawn((ACE_THR_FUNC)thread1,0,THR_NEW_LWP|  

THR_DETACHED); 

 

//Spawn off the second thread 

ACE_Thread_Manager::instance()->spawn((ACE_THR_FUNC)thread2,0,THR_NEW_LWP| THR_DETACHED); 

52 

 

 

//Wait for all threads in the manager to complete. 

ACE_Thread_Manager::instance()->wait(); 

ACE_DEBUG((LM_DEBUG,"Both threads done.Exiting.. \n")); 

 

分享到:
评论

相关推荐

    ACE线程、锁、同步机制

    ACE线程、锁、同步机制 ACE(Adaptive Communication Environment)是一个轻量级的OS并发机制的OO封装,旨在提供一种可移植和可扩展的接口,简化开发者在多种平台上开发客户和服务器应用时的线程管理和同步机制。...

    ACE学习应用实例-ACE线程

    ACE线程支持线程局部存储(TLS),用于在线程间保持独立的数据,以及线程池管理,允许高效地复用和调度线程资源。 2. **Socket通信** ACE提供了强大的Socket接口,支持TCP/IP和UDP协议。ACE_Socket类封装了底层的...

    ACE多级线程实例

    ### ACE多级线程实例分析 #### 一、概述 本文档主要介绍ACE框架下的多线程编程技术,包括线程锁(Mutex)与多线程应用实例等内容。ACE(Adaptive Communication Environment)是一个高性能的通信框架,它支持多种...

    VC++ ACE线程代码实例11例子

    1 ACE_Thread_Manager类创建线程组 2 ACE_Thread_Manage类线程挂起、继续、取消操作 3 ACE_TSS模板的线程专有变量 4 创建线程和线程互斥 5 动态更换互斥方法 6 使用令牌互斥方法 7 守卫锁也是自动锁方法 8 条件等待 ...

    ACE多线程服务器C++实现

    **ACE多线程服务器C++实现** ACE(Adaptive Communication Environment)是一个强大的、跨平台的C++库,它提供了一套全面的网络编程接口,包括TCP/IP、UDP、Unix域套接字等通信协议,以及多线程、定时器、事件调度...

    ACE基本的多线程编程[文].pdf

    本文件主要讨论的是如何在ACE中进行基本的多线程编程。 首先,创建多线程的核心在于定义一个继承自`ACE_Task_Base`或`ACE_Task`的类。`ACE_Task`是一个抽象基类,它为多线程服务提供了一个标准的接口。在派生类中,...

    MFCACE多线程demo

    在本文中,我们将深入探讨如何使用MFC(Microsoft Foundation Class)与ACE(Adaptive Communication Environment)库来实现多线程编程。MFC是微软提供的一个C++类库,用于简化Windows应用程序开发,而ACE则是一个跨...

    ACE简介、SOCKET、线程、同步、事件等相关资料

    ACE提供了一套线程管理工具,包括线程创建、同步、调度和销毁等,这些工具简化了在多线程环境中编写和维护代码的难度。线程同步机制,如互斥锁、条件变量和信号量,是防止数据竞争和死锁的重要手段,ACE对这些原语...

    整合ACE和ATL(多线程编程)

    **整合ACE和ATL:构建高效多线程应用程序** 在软件开发中,多线程编程是一种常见的技术,它允许多个任务同时执行,提高程序的响应性和效率。ACE(Adaptive Communication Environment)和ATL(Active Template ...

    ACE库安装包

    在本文中,我们将深入探讨ACE库的安装过程、主要功能以及如何利用其多线程特性来优化C++应用程序。 首先,让我们来了解ACE库的核心优势。ACE库提供了一组丰富的跨平台的网络编程接口,支持多种通信协议,包括TCP/IP...

    ACE-5.6.zip ACE5.6官网源码

    4. **ACE_TSS (Thread-Specific Storage)**:ACE提供了一种在多线程环境中存储线程局部数据的方法。ACE_TSS使得每个线程可以拥有自己的数据副本,而无需额外的同步措施。 5. **ACE_Reactor**:这是ACE的核心组件之...

    ACE库入门(中文)

    1. **线程管理**:ACE提供了线程创建、同步和通信的API,使开发者能够轻松地在多线程环境中工作。例如,`ACE_Thread`模块提供了创建线程、设置和获取线程属性以及线程同步(如互斥锁、条件变量)等功能。 2. **进程...

    ACE5.zip ACE5官网源码

    2. **ACE_TSS (Thread Specific Storage)**:ACE提供了一种线程局部存储的实现,通过`ACE_TSS`类,可以在线程级别存储数据,保证了数据在多线程环境下的安全性。 3. **ACE_Acceptor and ACE_Connector**: 这两个类...

    ACE 程序员指南 源代码

    7. **分布式系统设计**:ACE_TSS(Thread Specific Storage)用于线程局部存储,ACE_Logger提供日志记录,ACE_WFMO_Reactor实现了Windows下的基于WaitFOrMultipleObjects的反应器。 8. **性能优化**:ACE_Dynamic_...

    ACE库(linux)

    ACE_TSS(Thread Specific Storage)类允许开发者创建线程局部存储,解决了多线程环境下数据隔离的问题。 在分布式系统方面,ACE库支持CORBA(Common Object Request Broker Architecture),提供了一套完整的ORB...

    ACE.rar_ACE_ACE网络库_ACE网络编程_ace 网络库_网络 免费

    2. **并发处理**:ACE 支持多线程和事件驱动编程模型,提供了线程池、信号处理、异步I/O等机制,帮助开发者高效地管理并发任务。 3. **对象适配器**:ACE 中的对象适配器(如TCP和UDP适配器)封装了网络通信细节,...

    ACE-5.7.zip ACE5.7官网源码

    ACE5.7是该框架的一个版本,提供了丰富的网络编程接口和工具,支持多种协议,包括TCP/IP、UDP、Sockets等,并且具有线程管理和并发控制等功能。 ACE框架的核心理念是提供一种抽象层,使得开发者可以编写一次代码,...

    ACE入门 编译 配置 中文版

    ACE中的线程管理功能特别丰富,例如ACE_Thread::spawn()方法用于创建新线程并执行一个函数。我们可以在创建线程时指定线程的属性,如是否可以被等待(THR_JOINABLE)、是否创建新的轻量级进程(THR_NEW_LWP)。使用...

Global site tag (gtag.js) - Google Analytics