亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫(kù)
12下一頁
最近訪問板塊 發(fā)新帖
查看: 9634 | 回復(fù): 12
打印 上一主題 下一主題

errno是如何實(shí)現(xiàn)線程安全的? [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2007-08-23 11:57 |只看該作者 |倒序?yàn)g覽
在errno.h中
定義_MT后, errno被定義為 (*_errno())   , _errno定義為int * _errno(void);
但是不知道是具體如何實(shí)現(xiàn)線程安全的?

論壇徽章:
0
2 [報(bào)告]
發(fā)表于 2007-08-23 12:10 |只看該作者
我也不知道,如果讓你做你會(huì)怎么做這個(gè)函數(shù)?

論壇徽章:
39
2017金雞報(bào)曉
日期:2017-02-08 10:39:4219周年集字徽章-周
日期:2023-04-15 12:02:2715-16賽季CBA聯(lián)賽之深圳
日期:2023-02-16 14:39:0220周年集字徽章-年
日期:2022-08-31 14:25:28黑曼巴
日期:2022-08-17 18:57:0919周年集字徽章-年
日期:2022-04-25 13:02:5920周年集字徽章-20	
日期:2022-03-29 11:10:4620周年集字徽章-年
日期:2022-03-14 22:35:1820周年集字徽章-周	
日期:2022-03-09 12:51:3220周年集字徽章-年
日期:2022-02-10 13:13:4420周年集字徽章-周	
日期:2022-02-03 12:09:4420周年集字徽章-20	
日期:2022-01-25 20:14:27
3 [報(bào)告]
發(fā)表于 2007-08-23 12:10 |只看該作者
好象是TLS實(shí)現(xiàn)的。好象XEN還不完全支持TLS。

論壇徽章:
0
4 [報(bào)告]
發(fā)表于 2007-08-23 12:16 |只看該作者
線程管理會(huì)對(duì)每個(gè)線程有一個(gè)結(jié)構(gòu),就像我們能根據(jù)FILE來找到fd一樣。
只是這個(gè)結(jié)構(gòu)和線程一一對(duì)應(yīng)了

論壇徽章:
0
5 [報(bào)告]
發(fā)表于 2007-08-23 12:20 |只看該作者
可以找個(gè)實(shí)現(xiàn)來看看

static inline pthread_descr thread_self (void)
{
#ifdef THREAD_SELF
  return THREAD_SELF;
#else
  char *sp = CURRENT_STACK_FRAME;
#ifdef __ARCH_HAS_MMU__
  if (sp >= __pthread_initial_thread_bos)
    return &__pthread_initial_thread;
  else if (sp >= __pthread_manager_thread_bos
           && sp < __pthread_manager_thread_tos)
    return &__pthread_manager_thread;
  else if (__pthread_nonstandard_stacks)
    return __pthread_find_self();
  else
    return (pthread_descr)(((unsigned long)sp | (STACK_SIZE-1))+1) - 1












int * __errno_location()
{
    pthread_descr self = thread_self();
    return THREAD_GETMEM (self, p_errnop);
}


它根據(jù)線程棧的位置來找self,因?yàn)闂5奈恢霉蚕碚麄(gè)進(jìn)程地址空間,所以不同的線程是可以區(qū)分的。
線程id也一樣可以,不知道為什么沒有用

論壇徽章:
1
榮譽(yù)版主
日期:2011-11-23 16:44:17
6 [報(bào)告]
發(fā)表于 2007-08-23 12:29 |只看該作者
我的理解:
多線程情況下,每個(gè)線程有自己的私有數(shù)據(jù)errno。
通過int * _errno(void)這個(gè)函數(shù)能把該線程的errno變量
取出來。

論壇徽章:
0
7 [報(bào)告]
發(fā)表于 2007-08-23 12:33 |只看該作者
是呀,我也是這么想,最笨的方法可以這樣

int error[MAX_THREADS];
然后用線程的id(或者起它)去區(qū)別索引就可以了

論壇徽章:
0
8 [報(bào)告]
發(fā)表于 2007-08-23 12:44 |只看該作者
是TLS。

論壇徽章:
0
9 [報(bào)告]
發(fā)表于 2007-08-23 14:17 |只看該作者
菜鳥問:TLS是啥東西?

論壇徽章:
0
10 [報(bào)告]
發(fā)表于 2007-08-25 17:18 |只看該作者
errno不是全局變量, 就是使用線程私有數(shù)據(jù)實(shí)現(xiàn)線程安全的.
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國(guó)互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP