欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

守護進程創(chuàng)建、linux線程-創(chuàng)新互聯(lián)

?守護進程定義:

周期性的執(zhí)行某項任務(wù)或等待某個事件發(fā)生的進程,他的運行不依賴shell終端,他的生存周期較長,從開機開始運行直到關(guān)機結(jié)束。

成都網(wǎng)站設(shè)計、做網(wǎng)站介紹好的網(wǎng)站是理念、設(shè)計和技術(shù)的結(jié)合。創(chuàng)新互聯(lián)擁有的網(wǎng)站設(shè)計理念、多方位的設(shè)計風(fēng)格、經(jīng)驗豐富的設(shè)計團隊。提供PC端+手機端網(wǎng)站建設(shè),用營銷思維進行網(wǎng)站設(shè)計、采用先進技術(shù)開源代碼、注重用戶體驗與SEO基礎(chǔ),將技術(shù)與創(chuàng)意整合到網(wǎng)站之中,以契合客戶的方式做到創(chuàng)意性的視覺化效果。守護進程的創(chuàng)建步驟:

? 1.創(chuàng)建一個子進程,讓父進程退出

? fork

? 2.創(chuàng)建新的會話期(在子進程)?

? setsid();

? 3.改變子進程的工作目錄

? chdir("/")

? 4.取消文件權(quán)限掩碼

? umask(0)

? 5.關(guān)閉所有文件描述符

? getdtablesize

? opendir readdir chdir

線程相關(guān)

? 定義:線程是一種輕量級的進程用task_struct來標識它,它沒有自己的獨立內(nèi)存空間,它共 享創(chuàng)建它的進程的地址空間。

? 線程創(chuàng)建:

? 使用第三方線程庫提供的API

int pthread_create(pthread_t *thread, const pthread_attr_t *attr,
void *(*start_routine) (void *), void *arg);
??? ?作用:創(chuàng)建一個線程
??? ? *thread:指向線程ID的指針?
??? ?*attr:線程屬性,通常給NULL
??? ?參數(shù)三:指向線程執(zhí)行函數(shù)的函數(shù)指針
??? ?*arg:傳給線程執(zhí)行函數(shù)的入?yún)?br /> ??? ?返回值:0 成功;非0 失敗
?int pthread_join(pthread_t thread, void **retval);
??? ?作用:阻塞等待線程結(jié)束,并回收狀態(tài)值
??? ? thread:線程ID
??? ? **retval:指向線程退出狀態(tài)值的指針
?void pthread_exit(void *retval);
??? ?作用:線程退出函數(shù)
??? ?*retval:線程退出狀態(tài)值
? int pthread_cancel(pthread_t thread);
??? ?作用:取消線程
??? ? thread:線程ID
unubtu=Linux內(nèi)核+各種工具+桌面管理器+各種庫+各種應(yīng)用程序
多線程的通信 同步 互斥
在一個進程中可以創(chuàng)建多個線程,那么多個線程間會存在數(shù)據(jù)通信問題,
?會存在兩個線程相互配合完成一件事情,會存在兩個線程對公共資源的競態(tài)訪問問題
?多線程的數(shù)據(jù)通信-->使用全局變量
??? ?./pthead_com1 ?hello
?多線程的同步-->無名信號量 ?sem_t sem;
??? ?同步:兩個線程按照一定的順序相互配合完成一件事情
pthread1-->hello ? 1S ? sem_t ?sema;-->P/V操作函數(shù)控制sema和semb
pthread2-->world ?1s ? sem_t semb;
??? ?P操作:sem_wait(&sema)
??? ??? ?含義:sem_wait會檢測信號量sema的值是否大于0,若大于0,將sema減一
??? ??? ??? ??? ?同時函數(shù)返回。若等于0,阻塞當前線程。
??? ?V操作:sem_post(&sema)--》非阻塞函數(shù)
??? ??? ?含義:sem_post只會給檢測的信號量sema加1 ??? ? ?

多線程的互斥

互斥的引入:多個線程可能會使用同一段公共資源,若是同時訪問這段公共資源,就會造成多個線程對公共資源的競爭,從而造成訪問結(jié)果混亂。

如何解決:可以使用互斥鎖。

(1)多個線程能否使用同一個線程執(zhí)行函數(shù)

#include#includevoid *ThreadFunc(void *arg)
{
    printf("into thread func---------\r\n");
}
int main()
{
    pthread_t tID1 = -1;
    pthread_t tID2 = -1;
    if(0 != pthread_create(&tID1,NULL,ThreadFunc,NULL))
    {
        return -1;
    }
    if(0 != pthread_create(&tID2,NULL,ThreadFunc,NULL))
    {
        return -1;
    }
    pthread_join(tID1,NULL);
    pthread_join(tID2,NULL);
}

(2)兩個線程給線程執(zhí)行函數(shù)傳入不同的參數(shù),最后執(zhí)行結(jié)果是否發(fā)生混亂?

#include#include#include#define BUF_SIZE 11

void *ThreadFunc(void *arg)
{
    int i = 0;
    printf("into thread func---------\r\n");
    if(NULL == arg)
    {
        return (void *)NULLL;
    }
    char *pArr = (char *)arg;
    static char buf[BUF_SIZE] = {0};
    for(;i< 10; i++)
    {
        buf[i] = pArr[i];
        usleep(5000);
    }
    printf("buf:%s\r\n",buf);
}
int main()
{
    pthread_t tID1 = -1;
    pthread_t tID2 = -1;
    char arr1[] = "123456789";
    char arr2[] = "abcdefghi";
    if(0 != pthread_create(&tID1,NULL,ThreadFunc,(void *)arr1))
    {
        return -1;
    }
    if(0 != pthread_create(&tID2,NULL,ThreadFunc,(void *)arr2))
    {
        return -1;
    }
    pthread_join(tID1,NULL);
    pthread_join(tID2,NULL);
}

(3)使用互斥鎖解決兩線程互斥訪問公共資源

pthread_mutex_t mutex;//線程互斥鎖

pthread_mutex_init(&mutex,NULL)

pthread_mutex_lock(mutex);

pthread_mutex_unlock(mutex);

#include#include#include#define BUF_SIZE 11
pthread_mutex_t mutex;

void *ThreadFunc(void *arg)
{
    int i = 0;
    printf("into thread func---------\r\n");
    if(NULL == arg)
    {
        return (void *)NULLL;
    }
    pthread_mutex_lock(&mutex);
    char *pArr = (char *)arg;
    static char buf[BUF_SIZE] = {0};
    for(;i< 10; i++)
    {
        buf[i] = pArr[i];
        usleep(5000);
    }
    printf("buf:%s\r\n",buf);
    pthread_mutex_unlock(&mutex);
}
int main()
{
    pthread_t tID1 = -1;
    pthread_t tID2 = -1;
    char arr1[] = "123456789";
    char arr2[] = "abcdefghi";
    if(-1 == pthread_mutex_init(&mutex,NULL))
    {
        return -1;
    }
    if(0 != pthread_create(&tID1,NULL,ThreadFunc,(void *)arr1))
    {
        return -1;
    }
    if(0 != pthread_create(&tID2,NULL,ThreadFunc,(void *)arr2))
    {
        return -1;
    }
    pthread_join(tID1,NULL);
    pthread_join(tID2,NULL);
}

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧

網(wǎng)頁標題:守護進程創(chuàng)建、linux線程-創(chuàng)新互聯(lián)
文章網(wǎng)址:http://aaarwkj.com/article18/gcddp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供關(guān)鍵詞優(yōu)化、云服務(wù)器、品牌網(wǎng)站建設(shè)、App開發(fā)微信公眾號、動態(tài)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都做網(wǎng)站
大胆丰满邻居少妇在线观看| 日韩精品不卡在线观看| 日韩精品一区二区毛片| 国产精品日韩伦理一区二区| 日本高清不卡免费在线观看视频一二三区 | 欧美中日韩一区二区三区| 国产精品久久久久久久av三级| 日本午夜视频在线观看| 声入人心第一季在线观看| 一区二区三区四区四虎| 亚洲中文字幕第三页在线观看| 日韩欧美第一页在线观看| 韩国av电影免费观看| 亚洲欧美久久一区二区三区| 传媒视频在线观看网站| 91中文字幕国产日韩| 五月爱婷婷六月爱丁香色| 亚洲一区二区精品自拍| 免费的一区二区中文字幕| 欧美一区二区久久综合| 日本在线高清不卡免费播放| 有码不卡中文字幕在线视频| 在线观看精品日本一区二| 久久欧精品欧美日韩精品| 亚洲男人堂色偷偷一区| 五月天丁香婷婷一区二区| 成人精品国产亚洲av| 日本熟女午夜福利视频| 精品少妇人妻av蜜桃| 免费观看黄片视频在线观看| 青青草青青草在线观看视频 | 传媒视频在线观看网站| 亚洲欧美日韩1区2区| 欧美日韩台湾一区二区| 福利午夜福利在线观看| 国产乱肥老妇国产一区二| 日本中文字幕三级专区| 精品国产91乱码一区二区三区| 国产精品免费视频能看的| 亚洲欧美日韩精品av| 在线观看亚洲av日韩av|