yyzybb537 / libgo

Go-style concurrency in C++11
MIT License
3.22k stars 758 forks source link

一些小bug,win编译可能用的到 #253

Closed fysu closed 3 years ago

fysu commented 3 years ago

首先感谢开源这个携程库,这其实也不是些啥大问题,就只是一些小问题吧,还是提出来说下

版本是4ebfd4c

  1. locked_channel_impl.h文件中析构函数try_lock后没有unlock 退出会debug模式会触发断言提示资源占用
  2. error.cpp 在win sdk中10.0.19041.0 找不到uncaught_exception 应该是uncaught_exceptions把就少了个s
  3. context\fiber\context.h 写法有问题

    源代码

    struct FiberScopedGuard
    {
    FiberScopedGuard::FiberScopedGuard()
    {
    GetTlsContext() = ConvertThreadToFiber(nullptr);
    }
    FiberScopedGuard::~FiberScopedGuard()
    {
    ConvertFiberToThread();
    GetTlsContext() = nullptr;
    }
    static void*& GetTlsContext()
    {
    static thread_local void* native = nullptr;
    return native;
    }
    };

    结构里的函数就不要使用限定符了,貌似gcc允许这么写??? 修改后

    struct FiberScopedGuard
    {
    FiberScopedGuard()
    {
    GetTlsContext() = ConvertThreadToFiber(nullptr);
    }
    ~FiberScopedGuard()
    {
    ConvertFiberToThread();
    GetTlsContext() = nullptr;
    }
    static void*& GetTlsContext()
    {
    static thread_local void* native = nullptr;
    return native;
    }
    };

最后再次感谢魅族团队开源的libgo