lua中尽量使用local

结论: lua 5.1.5 windows环境下 使用local变量能够稍微提高效率


但是如果有了间接引用,比如 上面代码里面 local g = {} 定义成 local a = {}, a.g = {}

增加了简介引用之后,效率就会发生变化了


实际使用中不是很好控制

比如通常一个lua文件通常写成 

local a = {} --或者 local a = class("something")

return a


那么 function a:func() end中如果要声明此类变量该如何处理呢?

红色是需要思考的部分


参考

1. http://lua-users.org/wiki/OptimisingUsingLocalVariables

Lua 中调用 C 函数来获取 C 中的锁,需要先在 C 语言中实现锁的相关操作,然后将其封装为 C 函数,在 Lua 中调用该函数即可。 下面是一个示例代码,展示了如何在 C 中实现锁的相关操作,并将其封装为 C 函数供 Lua 调用: ```c #include <pthread.h> #include "lua.h" #include "lauxlib.h" #include "lualib.h" // 定义一个互斥锁 static pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER; // 将锁封装为 C 函数 static int lock(lua_State *L) { pthread_mutex_lock(&mutex); // 获取锁 return 0; } // 将解锁封装为 C 函数 static int unlock(lua_State *L) { pthread_mutex_unlock(&mutex); // 释放锁 return 0; } // 将锁和解锁函数注册到 Lua 中 static const struct luaL_Reg lock_funcs[] = { { "lock", lock }, { "unlock", unlock }, { NULL, NULL } }; int luaopen_lock(lua_State *L) { luaL_newlib(L, lock_funcs); return 1; } ``` 在上面的代码中,我们使用 pthread 库实现了一个互斥锁,并将其封装为了名为 `lock` 和 `unlock` 的 C 函数。然后,我们将这两个函数注册到 Lua 中,通过调用 `luaopen_lock` 函数来实现。 在 Lua使用这个锁,可以这样写: ```lua local lock = require("lock") lock.lock() -- 获取锁 -- do something lock.unlock() -- 释放锁 ``` 注意,在 Lua 中获取了锁后,需要在合适的时候释放锁,否则会导致死锁等问题。同时,还需要注意在多线程环境下,尽量避免使用全局变量等共享变量,以免导致竞争条件等问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值