b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

tls pjsua app 分析 pjsua(11)

电脑杂谈  发布时间:2018-02-09 00:05:23  来源:网络整理

TLS 是一个机制,经由它,程序可以拥有全域变量,但处于「每一线程各不相同」的状态

进程中的所有线程都可以拥有全域变量,但这些变量其实是特定对某个线程才有意义

举例:多线程程序,每一个线程都对不同的文件写文件(也因此它们使用不同的文件handle)。tls这种情况下,把每一个线程所使用的文件handle 储存在TLS 中,当线程需要知道所使用的handle,它可以从TLS 获得。tls重点在于:线程用来取得文件handle 的那一段码在任何情况下都是相同的,而从TLS中取出的文件handle 却各不相同

就知道 不同的index 线程对应不同的indent(契约?订货单?)


PJ_DEF(pj_status_t) pj_thread_local_set(long index, void *value){
    rc = TlsSetValue(index, value);  //可以把数据放配置到的TLS slot ,参数分别是TLS slot index值以及欲写入的数据内容
    return rc!=0 ? PJ_SUCCESS : PJ_RETURN_OS_ERROR(GetLastError());
}

上面 其实已经TlsSetValue值和线程index绑定,这里 log_get_raw_indent其实就是根据线程的index取出保存的数据,流程图如下:

pjlog3

static int log_get_raw_indent(void)
{
    return (long)(pj_ssize_t)pj_thread_local_get(thread_indent_tls_id);
}


PJ_DEF(void*) pj_thread_local_get(long index)
{
    return TlsGetValue(index); //获取之前保存在TLS 数组slot中的数据
}

以上就是线程操作的流程,写的有点乱,需要出一个专题分析

根据上面的Create pjsua

pjsua_create_struct

已经分析了Init pjsua data 、set default logging setting、以及init pjlib

后面的初始化,每一个都特别的大,所以这里拆分为9篇文章分析


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-67841-11.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    • 李延年
      李延年

      他们了解世界更了解我们大陆

    • 蒙亚林
      蒙亚林

      当然来鬼城的难民是限制条件的

      • 石警元
        石警元

        任何东西都要一分为二看问题

    • 钢贝
      钢贝

      现在打我们是鱼

    热点图片
    拼命载入中...