c – pthread_key_t和pthread_once_t?
从pthreads开始,我无法理解pthread_key_t和pthread_once_t的业务是什么?
如果可能,有人会用简单的例子解释一下例子吗? 谢谢 解决方法
不,这不能用外行术语来解释. Laymen无法使用C中的pthread成功编程.它需要一位称为“计算机程序员”的专家:-)
pthread_once_t是pthread_once必须访问的一点存储空间,以确保它能够执行它在锡上所说的内容.每次一次控制都将允许一个init例程被调用一次,而且只调用一次,无论从多少个线程调用多少次,可能同时调用.通常,您为计划按照线程安全的方式按需初始化的每个对象使用不同的一次控件.您可以将它视为一个整数,它可以原子方式作为标志访问,无论是否已选择一个线程来执行init.但是由于pthread_once是阻塞的,我想如果实现也可以在同步原语中填充(我唯一一次实现pthread_once,我不能,那么曾经控制采取任何一个3个状态(开始,初始化,完成).但后来我无法改变内核.不寻常的情况). pthread_key_t就像是访问线程本地存储的索引.您可以将每个线程视为具有从键到值的映射.向TLS添加新条目时,pthread_key_create会为其选择一个密钥,并将该密钥写入您指定的位置.然后,只要您想为当前线程设置或检索该TLS项的值,就可以从任何线程使用该键. TLS为您提供密钥而不是让您选择密钥的原因是,不相关的库可以使用TLS,而无需合作以避免使用相同的值并且摧毁彼此的TLS数据.例如,pthread库可以保??留一个全局计数器,并且第一次为pthread_key_create调用键0,为第二次调用1,依此类推. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |