darwin之OSRefTable使用
来源:互联网 发布:王者荣耀抽奖活动源码 编辑:程序博客网 时间:2024/06/12 10:46
在OSRefTable里面可以管理map(一组键值对),(key)键是一个唯一的字符串,而(value)值可以是任何类型。而key,value通过OSRef来设置,
OSRefTable只需要管理OSRef即可。
OSRefTable可以在多个线程中处理而不需要加锁,因为其内部维护了锁。
fRefTable.Register注册元素。
OSRef* ref = fRefTable.Resolve(&idStr);引用元素,引用完毕一定要记得释放
fRefTable.Release(ref);释放元素
fEventThread->fRefTable.UnRegister(&fRef);注销元素,需要所有引用全部释放完毕才可以释放。
class EventSock;int g_flag = -1;class EveThread :public OSThread{public:EveThread():OSThread() {}virtual ~EveThread() {}private:virtual void Entry();private:OSRefTable m_RefTable;friend class EventSock;};class EventSock{public:static void Initialize(){sEventThread = new EveThread();sEventThread->Start();}EventSock(int index):m_sKey((char*)&index,sizeof(index)){m_ref.Set(m_sKey, this);sEventThread->m_RefTable.Register(&m_ref);m_nIndex = index;}void SetFlag(){g_flag = m_nIndex;}int GetFlag(){return m_nIndex;}private:OSRef m_ref;StrPtrLen m_sKey;int m_nIndex;static EveThread *sEventThread;};EveThread *EventSock::sEventThread = NULL;void EveThread::Entry(){while (true){if (g_flag != -1){StrPtrLen ptr((char*)&g_flag, sizeof(int));OSRef *pRef = m_RefTable.Resolve(&ptr);if (pRef != NULL){EventSock *pSock = (EventSock*)pRef->GetObjectPtr();printf("===============%d\n", pSock->GetFlag());g_flag = -1;}else{printf("error\n");}}OSThread::Sleep(100);}}int main(){Init();EventSock::Initialize();for (int i = 0; i < 100; i++){EventSock *p = new EventSock(i);p->SetFlag();OSThread::Sleep(1000);}
阅读全文
0 0
- darwin之OSRefTable使用
- OSRefTable使用
- OSRefTable 用法
- darwin之枚举值得组合使用(Task)
- darwin之解析字符串
- darwin之角色管理
- darwin之回调
- darwin之RTPSession
- darwin之数据包管理
- darwin之数据包管理
- darwin之ClientSession
- Darwin
- Darwin
- 【Darwin学习笔记】之EventThread
- 【Darwin学习笔记】之TaskThread
- 【Darwin学习笔记】之TaskThread
- 【Darwin学习笔记】之EventThread
- darwin之task线程分类
- Java IO流学习总结
- Mac 下运行DSO(Direct Sparse Odometry)
- cpu端口读写
- Java实现线程的3种方式
- Spring 注解为空解决方案
- darwin之OSRefTable使用
- CSS实现垂直居中
- java Request对象和Response对象详解
- Bryce1010的微机接口课设
- 自学小记_4(几种数据传输方式)
- Java TCP/IP Socket
- 关于解决乱码问题的几个步骤
- python-生成随机手机号
- 设计模式 学习笔记 之 装饰模式 Decorator(6)