青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

大龍的博客

常用鏈接

統計

最新評論

pthread之線程堆棧(1) --- 轉

先來講說線程內存相關的東西,主要有下面幾條:
  1. 進程中的所有的線程共享相同的地址空間。
  2. 任何聲明為static/extern的變量或者堆變量可以被進程內所有的線程讀寫。
  3. 一個線程真正擁有的唯一私有儲存是處理器寄存器。
  4. 線程棧可以通過暴露棧地址的方式與其它線程進行共享。
     有大數據量處理的應用中,有時我們有必要在棧空間分配一個大的內存塊或者要分配很多小的內存塊,但是線程的棧空間的最大值在線程創建的時候就已經定下來了,如果棧的大小超過個了個值,系統將訪問未授權的內存塊,毫無疑問,再來的肯定是一個段錯誤。可是沒辦法,你還是不得不分配這些內存,于是你開會為分配一個整數值而動用malloc這種超級耗時的操作。當然,在你的需求可以評估的情況下,你的需求還是可以通過修改線程的棧空間的大小來改變的。

下面的我們用pthread_attr_getstacksize和pthread_attr_setstacksize的方法來查看和設置線程的棧空間。
注意:
      下面的測試代碼在我自己的機子上(ubuntu6.06,ubuntu6.10,redhat 9, gentoo)通過了測試,但是很奇怪的是在我同事的機子上,無論是改變環境,還是想其它方法都不能正常的運行 。在網上查了一下,很多人也存在同樣的問題,至今不知道為何。

linux線程的實現方式決定了對進程的限制同樣加在了線程身上:)所以,有問題,請參見<pthread之線程棧空間(2)(進行棧)

直接看代碼吧,只有一個C文件(thread_attr.c)
#include <limits.h>
#include <pthread.h>
#include "errors.h"


//線程體,在棧中分配一個大小為15M的空間,并進行讀寫
void *thread_routine (void *arg)
{
printf ("The thread is here\n");
//棧大小為16M,如果直接分配16M的棧空間,會出現段錯誤 ,因為棧中還有其它的
//變量要放署
char p[1024*1024*15];
int i=1024*1024*15;

//確定內存分配的確成功了
while(i--)
{
p[i] = 3;
}

printf( "Get 15M Memory!!!\n" );

//分配更多的內存(如果分配1024*1020*512的話就會出現段錯誤)
char p2[ 1024 * 1020 + 256 ];
memset( p2, 0, sizeof( char ) * ( 1024 * 1020 + 256 ) );
printf( "Get More Memory!!!\n" );
return NULL;
}

int main (int argc, char *argv[])
{
pthread_t thread_id;
pthread_attr_t thread_attr;
size_t stack_size;
int status;

status = pthread_attr_init (&thread_attr);
if (status != 0)
err_abort (status, "Create attr");

status = pthread_attr_setdetachstate (
&thread_attr, PTHREAD_CREATE_DETACHED);

if (status != 0)
err_abort (status, "Set detach");
//通常出現的問題之一,下面的宏沒有定義
#ifdef _POSIX_THREAD_ATTR_STACKSIZE
//得到當前的線程棧大小
status = pthread_attr_getstacksize (&thread_attr, &stack_size);
if (status != 0)
err_abort (status, "Get stack size");
printf ("Default stack size is %u; minimum is %u\n",
stack_size, PTHREAD_STACK_MIN);

//設置當前的線程的大小
status = pthread_attr_setstacksize (
&thread_attr, PTHREAD_STACK_MIN*1024);
if (status != 0)
err_abort (status, "Set stack size");

//得到當前的線程棧的大小
status = pthread_attr_getstacksize (&thread_attr, &stack_size);
if (status != 0)
err_abort (status, "Get stack size");
printf ("Default stack size is %u; minimum is %u\n",
stack_size, PTHREAD_STACK_MIN);
#endif
int i = 5;
//分配5個具有上面的屬性的線程體
while(i--)
{
status = pthread_create (
&thread_id, &thread_attr, thread_routine, NULL);
if (status != 0)
err_abort (status, "Create thread");
}

getchar();
printf ("Main exiting\n");
pthread_exit (NULL);
return 0;
}
看看執行過程:
dongq@DongQ_Lap ~/workspace/test/pthread_attr $ make
cc -pthread -g -DDEBUG -lrt  -o thread_attr thread_attr.c
dongq@DongQ_Lap ~/workspace/test/pthread_attr $ ./thread_attr
Default stack size is 8388608; minimum is 16384         //默認的棧大小為8M
Default stack size is 16777216; minimum is 16384      //設置后的結果為16M
The thread is here
The thread is here
The thread is here
The thread is here
The thread is here
Get 15M Memory!!!
Get More Memory!!!
Get 15M Memory!!!
Get More Memory!!!
Get 15M Memory!!!
Get 15M Memory!!!
Get More Memory!!!
Get More Memory!!!
Get 15M Memory!!!
Get More Memory!!!

Main exiting

posted on 2009-06-07 14:41 大龍 閱讀(715) 評論(0)  編輯 收藏 引用


只有注冊用戶登錄后才能發表評論。
網站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美激情视频一区二区三区在线播放| 91久久精品国产91久久| 亚洲激情在线激情| 男女精品网站| 日韩午夜在线| 99在线精品视频| 国产精品久久久久高潮| 欧美一区1区三区3区公司| 亚洲免费在线播放| 欧美精品一区二区精品网| 国产婷婷色一区二区三区四区 | 欧美成人日韩| 欧美电影打屁股sp| 一区二区不卡在线视频 午夜欧美不卡在 | 久久日韩粉嫩一区二区三区| 亚洲国产成人一区| 亚洲日本无吗高清不卡| 国产精品成人在线观看| 欧美专区第一页| 狼狼综合久久久久综合网| 日韩视频一区| 香蕉av777xxx色综合一区| 狠狠入ady亚洲精品经典电影| 欧美.www| 国产精品一区二区三区观看| 久久一区二区三区四区| 欧美日韩国产小视频| 欧美亚洲尤物久久| 免费成人黄色| 午夜精品在线视频| 麻豆成人在线观看| 亚洲免费在线播放| 蜜月aⅴ免费一区二区三区 | 亚洲第一页自拍| 亚洲精品日韩综合观看成人91| 国产精品欧美精品| 欧美激情视频网站| 国产美女在线精品免费观看| 亚洲国产精品va在线看黑人动漫| 国产精品免费一区二区三区在线观看 | 亚洲久久成人| 激情婷婷欧美| 在线亚洲电影| 亚洲人在线视频| 欧美在线观看www| 亚洲天堂网在线观看| 久久婷婷色综合| 久久国产精品黑丝| 欧美日韩一区二区在线 | 99在线热播精品免费| 欧美一区二区三区四区在线| 亚洲视频高清| 欧美成人日韩| 久久综合伊人77777麻豆| 国产精品久久一级| 亚洲精品国精品久久99热| 伊人久久婷婷色综合98网| 亚洲欧美日本另类| 亚洲视频在线二区| 欧美精品亚洲| 91久久精品一区| 亚洲国产婷婷香蕉久久久久久| 欧美一区免费视频| 欧美在线视频网站| 国产精品免费一区二区三区在线观看| 亚洲欧洲美洲综合色网| 亚洲人成亚洲人成在线观看| 久久久免费观看视频| 久久精品欧美日韩精品| 国产美女精品一区二区三区 | 欧美www视频| 狠狠色狠狠色综合日日91app| 欧美在线视频全部完| 久久成人精品一区二区三区| 国产欧美精品一区aⅴ影院| 亚洲综合视频1区| 欧美与黑人午夜性猛交久久久| 国产精品视频一区二区三区| 亚洲欧美国产一区二区三区| 欧美在线视频二区| 国产午夜精品理论片a级大结局| 午夜久久久久久| 久久免费偷拍视频| 尤物99国产成人精品视频| 美国三级日本三级久久99| 亚洲大片av| 亚洲丝袜av一区| 国产精品欧美在线| 欧美综合二区| 亚洲国产欧美日韩| 亚洲一区二区三区四区五区午夜 | 女主播福利一区| 亚洲精品久久久久中文字幕欢迎你| 99精品国产福利在线观看免费| 欧美日韩一区高清| 欧美亚洲三级| 亚洲国产精品免费| 亚洲一区二区在线播放| 国产日韩在线一区| 欧美xxx成人| 亚洲天堂成人| 欧美激情二区三区| 亚洲女同精品视频| 在线观看欧美成人| 欧美日韩精品在线播放| 香蕉久久夜色精品国产使用方法| 另类春色校园亚洲| 亚洲天堂成人| 在线成人欧美| 国产精品久久久久久久9999| 榴莲视频成人在线观看| 亚洲图片你懂的| 欧美二区在线看| 欧美一区二区性| 亚洲免费大片| 一区三区视频| 国产伦精品一区二区三区高清版| 麻豆精品91| 午夜欧美大尺度福利影院在线看| 91久久国产综合久久| 久久久久久久波多野高潮日日| 一区二区三区免费网站| 精品91在线| 国产欧美欧洲在线观看| 欧美日韩国产综合网| 久久亚洲高清| 久久精品1区| 亚洲男人影院| 在线亚洲免费| 亚洲精品一区二区在线| 欧美丰满高潮xxxx喷水动漫| 久久久噜噜噜久久久| 性久久久久久久| 亚洲午夜高清视频| 日韩视频免费在线| 亚洲电影在线看| 精品成人一区二区三区| 国产农村妇女毛片精品久久莱园子| 欧美日本精品| 欧美精品色网| 欧美美女视频| 欧美精品九九| 欧美激情1区2区3区| 欧美mv日韩mv亚洲| 欧美xx69| 欧美精品一级| 欧美日韩在线播| 国产精品chinese| 国产精品美女一区二区| 国产精品豆花视频| 国产精品久久久久久久久借妻| 欧美日韩中文字幕在线视频| 欧美三区美女| 国产精品日韩欧美一区| 国产精品久久久久久久电影 | 国产女主播一区二区三区| 欧美三区不卡| 国产精品羞羞答答| 国产麻豆午夜三级精品| 国产最新精品精品你懂的| 黑人巨大精品欧美一区二区| 伊人一区二区三区久久精品| 亚洲人成免费| 亚洲视频在线观看视频| 性久久久久久久久| 久久蜜桃av一区精品变态类天堂| 狂野欧美激情性xxxx| 亚洲成色999久久网站| 国产啪精品视频| 国产欧美日韩综合精品二区| 国产一区成人| 亚洲激情社区| 亚洲欧美国产另类| 久久―日本道色综合久久| 免费欧美在线| 一个色综合av| 欧美综合77777色婷婷| 欧美护士18xxxxhd| 国产精品黄色| 亚洲国产一区二区a毛片| 亚洲亚洲精品三区日韩精品在线视频| 欧美一级视频一区二区| 牛夜精品久久久久久久99黑人 | 久久成人久久爱| 欧美高清你懂得| 亚洲一区二区三区四区中文| 久久久国产午夜精品| 欧美天天综合网| 精品av久久707| 亚洲女人小视频在线观看| 久久一二三国产| 亚洲色在线视频| 欧美成人r级一区二区三区| 国产精品美女一区二区在线观看| 亚洲国产二区| 久久久国产精品亚洲一区| 日韩一级黄色av| 蜜臀久久99精品久久久久久9| 国产欧亚日韩视频| 一本到12不卡视频在线dvd|