# enable gc64 mode for x64.
#xcflags+= -dluajit_enable_gc64
修改 原始碼中llimits.h的
#define lua_lock(l) ((void)0)
#define lua_unlock(l) ((void) 0)
重寫這兩個巨集。以新增pthread提供鎖功能為例:
在lstate.h中,對globalstate結構新加乙個成員:
pthread_mutex_t lock;
然後在lua_newstate中新增初始化**:
pthread_mutex_init(&g->lock, null);
接著重定義lock/unlock巨集(寫在原定義前面即可):
#define lua_lock(l) pthread_mutex_lock(&(g(l)->lock));
#define lua_unlock(l) pthread_mutex_unlock(&(g(l)->lock));
最後在close_state函式的末尾新增兩行:
static void close_state (lua_state *l)
static lj_ainline uint32_t lj_str_hash(const char* str, size_t len)
if (len >= 4)
/* [0, 4) */
return lj_str_hash_1_4(str, len);
} /* [128, inf) */
return lj_str_hash_128_above(str, len);
}
luajit原始版本
if (len >= 4) else if (len > 0) else
其次減少字串拼接,用table拼接。 閱讀Vector原始碼記錄的一些筆記
在多執行緒的情況下,arraylist和linkedlist都是執行緒不安全的,vector是執行緒安全的,arraylist是基於陣列實現的,linkedlist是基於雙向鍊錶實現,而vector的實現也是基於陣列的,從資料結構來看,vector和arraylist應該很像,實時也是如此,基本上兩...
記錄一些爬蟲的小細節
1.使用beautifulsoup初始化用requests獲取到的html文字時,有時候會出現亂碼現象,只需要指定response.encoding utf 8 即可 2.有時候使用selenium定位元素時,定位 沒有問題,但是提示定位不到,這是因為頁面中存在多個iframe標籤,相當於多個子頁面...
C 一些細節
include include pthread.h using namespace std static pthread mutex t mutex class single class single public static single instance static single getin...