multithreading - 在多线程环境中使用专用 "consoles"的 Lua session

标签 multithreading lua

在用 C++ 编写的嵌入式多线程程序中,有许多 Lua session (每个 session 由其自己的 lua_State 表示)。每个 Lua session 都有一个由 C++ 对象表示的专用“控制台”。此“控制台”旨在提供特定于 session 的标准输入/标准输出/标准错误流。

将这样的“控制台”传递给 Lua session 的正确方法是什么?
将标准流重定向到此类控制台或从此类控制台重定向的正确方法是什么?

最佳答案

您可以使用

userdata插入io.stdin/stdout/stderr
lua_getglobal(L, "io");
lua_pushlightuserdata(L, …); // or whatever value you want here
lua_setfield(L, 0, "stdin");
// rinse, repeat for stdout and stderr

关于multithreading - 在多线程环境中使用专用 "consoles"的 Lua session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30433412/

相关文章:

c++ - std::mutex 和 condition_variable 无法访问类内的私有(private)成员

objective-c - 线程错误 BAD_ACCESS (SIGSEGV)

c# - 正确完成服务器线程

c++ - 如何使用实体/组件/系统架构在更多数据驱动的环境中设置 openGL?

lua - 检查表 Lua 中的项目

c++ - 如何为自定义协议(protocol)创建 Wireshark 解析器,而无需重新编译 Wireshark

lua - Lua 是否像 Swift 或 C# 中那样具有 variable?.function() 之类的东西?

java - Java 中更改线程优先级需要多长时间?

Python多进程而不是线程?

c++ - 集成 Lua 以在我的游戏引擎中构建我的 GameEntities?