<commit_before>---
layout: post
title: "pthread"
description: ""
category: 
tags: []
---
{% include JB/setup %}

    static int count  = 0; // count 是一个静态全局变量
    /* 保护count操作的互斥体，<span style="font-family: Arial, Helvetica, sans-serif;">PTHREAD_MUTEX_INITIALIZER是对互斥体变量进行初始化的特殊值 </span>*/
    pthread_mutex_t count_mutex = PTHREAD_MUTEX_INITIALIZER;
    
    //A方法 线程1的线程函数
    void * A(void * data){
        while (1) {
            /* 锁定保护count操作的互斥体。*/
            pthread_mutex_lock (&count_mutex);
            count += 1;
            printf("%d\n",count);
            /* 已经完成了对count操作的处理,因此解除对互斥体的锁定。*/
            pthread_mutex_nlock (&count_mutex);
        }
    }<commit_msg>renew<commit_after>---
layout: post
title: "线程与进程的初步知识"
description: ""
category: C++
tags: [线程,进程]
---
{% include JB/setup %}

线程与进程的初步知识
==========

基本概念
--

> 进程是具有一定独立功能的程序，关于某个数据集合上的一次运行活动。

进程是系统进行资源分配和调度的一个独立单位。

> 线程是进程的一个实体，是CPU调度和分派的基本单位，它是比进程更小的能独立运行的基本单位。

线程自己基本上不拥有系统资源，只拥有一点在运行中必不可少的资源（如程序计数器,一组寄存器和栈），但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源。

> 一个线程可以创建和撤销另一个线程；同一个进程中的多个线程之间可以并发执行。

区别
--

 - 地址空间:进程内的一个执行单元；进程至少有一个线程；它们共享进程的地址空间；而进程有自己独立的地址空间；
 - 资源拥有：进程是资源分配和拥有的单位，同一个进程内的线程共享进程的资源。
 - 线程是处理器调度的基本单位，但进程不是。
 - 二者均可并发执行。

代码
--

    static int count  = 0; // count 是一个静态全局变量
    /*保护count操作的互斥体PTHREAD_MUTEX_INITIALIZER是对互斥体变量进行初始化的特殊值*/
    pthread_mutex_t count_mutex = PTHREAD_MUTEX_INITIALIZER;
    void * A(void * data){
        while (1) {
            /* 锁定保护count操作的互斥体。*/
            pthread_mutex_lock (&count_mutex);
            count += 1;
            printf("%d\n",count);
            /* 已经完成了对count操作的处理,因此解除对互斥体的锁定。*/
            pthread_mutex_nlock (&count_mutex);
        }
    }
{'fraction_non_alphanumeric': 0.12930011862396204, 'fraction_numerical': 0.004151838671411625, 'mean_word_length': 2.9881796690307327, 'pattern_counts': {'":': 0, '<': 5, '<?xml version=': 0, '>': 8, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '4864275', 'n_tokens_mistral': 949, 'n_tokens_neox': 1044, 'n_words': 90}