美文网首页
openGauss源码#thread_id

openGauss源码#thread_id

作者: upup果 | 来源:发表于2021-01-07 12:56 被阅读0次

thread.h和thread.cpp是可重用线程id逻辑的实现.线程的当前id t_thrd.mot_cxt.currentThreadId是线程私有的.整体来看,thread_id的相关实现和connection_id的实现类似,主要函数如下:
1.InitThreadIdPool(uint16_t maxThreads):初始化可重用线程标识符池。
  首先初始化自旋锁,并创建线程的私有变量pthread_key_t threadIdCleanupKey; 调用AllocThreadIdArray函数,计
  算数组大小,并分配内存.
2.AllocThreadId:为当前线程分配可重用的线程标识符。当一个线程开始时,它必须调用这个函数,然后才能使用全
  局的线程局部变量_current_thread_id。
  首先获取自旋锁,计算线程ID, uint16_t threadId = THREADS_PER_WORD * arrayIndex + bitIndex.如果这个id
  有效的,就调用SetCurrentThreadId(threadId),赋值给MOTCurrThreadId = threadId
3.其他的函数,如DestroyThreadIdPool,FreeThreadId,GetMaxThreadCount等略过

相关文章

网友评论

      本文标题:openGauss源码#thread_id

      本文链接:https://www.haomeiwen.com/subject/yepmoktx.html