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

守護進程創(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毛片在线观看| 98精品熟女亚洲av| 可以看的黄色亚洲网站| 日本a级免费大片网站| 欧美熟妇在线视频你懂的| 四虎海外永久免费地址| 欧美午夜国产在线观看| 国产精品欧美日韩一区| 美国一级二级三级黄片| 婷婷网色偷偷亚洲男人| 日韩一级黄色片在线播放| 久久精品国产亚洲夜色av网站 | 久久久久精品久久久| 国产成人精品免费视频大| 神马久久午夜免费福利| 无码精品人妻一区二区三区中| 海外成人永久免费视频| 在线中文字幕日韩精品| 日本精品在线不卡视频| 国产精品日本一区二区三区在线 | 91亚洲精品国产一区| 韩国专区福利一区二区| 亚洲精品一区二区毛豆| 久久久亚洲精品中文字幕蜜桃| 开心久久婷婷综合中文字幕| 不卡av免费在线网址| av资源在线观看少妇丰满| 亚洲成人黄色片在线观看| 很黄很刺激的视频中文字幕| 国产成人av在线观看| 国产精品一区二区激情视频| 久久精品有码视频免费观看| 亚洲熟女av综合网丁香| 91精品啪在线观看国产日本| 日本一区二区三区中文字幕不卡| 黄色午夜福利在线观看| 成人18禁视频免费看|