zoukankan      html  css  js  c++  java
  • 今天天气不错

    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来写.  蛋疼!

  • 相关阅读:
    第一次 实习笔记
    docker 提示 Drive has not been shared 错误
    使用matplotlib画出log的图像
    python基础实现tcp文件传输
    django简单实现注册登录模块
    python使用消息队列RabbitMq(进阶)
    scrapy爬虫值Items
    redis常见配置redis.conf
    js实现往数组中添加非存在的对象,如果存在就改变键值。
    CSS之user-select——设置标签中的文字是否可被复制
  • 原文地址:https://www.cnblogs.com/emyueguang/p/3863469.html
Copyright © 2011-2022 走看看