• 今天天气不错


    2014.7.23 下午,  快5点, 苏州, 天气不错, 有很多的云.

    让我想起了刚来苏州那一年, 也是在夏天, 与大家一块去苏州乐园玩的情意. 那天的天气和今天像极了. 但是心情却不一样了.  就像甄嬛说的, 这样的朝阳如同我们进宫那一年, 但心境却大不相同了.

    今天下班后得去疾控中心打针, 上个月的某天晚上下班后, 在站台附近看到一只小猫,  大概两个月不到的样子,  走路颤颤巍巍的,  想把它带回家养, 谁知被它狠狠的咬了一口, 我满手都是血,  怕得狂犬病,  果断去打针,  今天是最后一针.

    现在的服务器是用C++和lua写的, 都知道lua不支持多线程, 如果在多个线程中同时使用lua_State*的话,  那一定会崩溃的,  只是早晚的问题.  如果给每个调用lua_State的地方都加一个锁的话,  那多线程就变成单线程的了,  甚至还不如单线程,  因为这个锁来锁去的东西得切换线程.  加了锁, 变成了单线程,  那就没意义了;  没意义倒还在其次,  那并发起来的服务器,  单线程是扛不住的!

    由于是在windows下面写的服务器, 我使用的网络模型是windows线程池. 它内部把IOCP给封装了一下, 其实就是用的IOCP.  每次响应消息的时候, 都是一个线程. 

    我现在的做法是做了一个lua_State的管理类. 用来分配和回收lua_State, 每次响应消息的时候呢就分配出一个lua_State给这个线程使用. 用完之后,  就又把这个lua_State给回收起来.  不是把lua_State给关了. 使用这种方式最重要的就是共享数据的问题.  我现在 将lua中的共享都提出来放到C++中了,  lua就做逻辑处理吧您内!

    现在想想, 多线程的部分完全没有必要用lua来写.  蛋疼!

  • 相关阅读:
    Java Swing打猎射击游戏源码
    php实现在线下载程序安装包功能
    WP
    双人对战的球类游戏IOS源码
    非常不错的新闻客户端应用安卓源码
    创业建议:如何写挖人邮件
    wp8路线跟踪应用源码详细说明
    wp版笔记本应用源码
    旅游风景展示应用源码iPad版
    bitset优化背包
  • 原文地址:https://www.cnblogs.com/emyueguang/p/3863469.html
Copyright © 2020-2023  润新知