首页 > 其他分享 >两线程读写数组

两线程读写数组

时间:2024-08-19 23:26:31浏览次数:12  
标签:thread int 读写 printf 两线 mutex 数组 pthread NULL

#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
#include <unistd.h>

#define ARRAY_SIZE 10

int shared_array[ARRAY_SIZE]; 
pthread_mutex_t mutex;        
void *write_data(void *arg)
{
    int thread_id = *(int *)arg;
    for (int i = 0; i < ARRAY_SIZE; i++)
    {
        pthread_mutex_lock(&mutex);           
        shared_array[i] = thread_id * 10 + i; 
        printf("线程 %d 写入数据: %d\n", thread_id, shared_array[i]);
        pthread_mutex_unlock(&mutex); 
        sleep(1);                    
    }
    return NULL;
}

int main()
{
    pthread_t thread1, thread2;
    int thread_id1 = 1;
    int thread_id2 = 2;
    pthread_mutex_init(&mutex, NULL);
    pthread_create(&thread1, NULL, write_data, (void *)&thread_id1);
    pthread_create(&thread2, NULL, write_data, (void *)&thread_id2);
    pthread_join(thread1, NULL);
    pthread_join(thread2, NULL);
    printf("最终数组内容:\n");
    for (int i = 0; i < ARRAY_SIZE; i++)
    {
        printf("%d ", shared_array[i]);
    }
    printf("\n");
    pthread_mutex_destroy(&mutex);
    return 0;
}

标签:thread,int,读写,printf,两线,mutex,数组,pthread,NULL
From: https://www.cnblogs.com/yesiming/p/18368344

相关文章

  • 【数据结构与算法第一章】编程基础:变量与数据类型、指针、结构体、数组与链表、程序结
    目录【数据结构与算法第一章】编程基础1.1变量与数据类型1.2指针1.3结构体1.4数组和链表1.5程序结构1.6函数中参数的传递1.7C语言中运算符的含义【数据结构与算法第一章】编程基础1.1变量与数据类型变量:    ①在C语言中,所有变量必须先声明后使用......
  • Java数组02:数组内存分析、三种初始化方式及特点
    本节内容视频链接:Java数组03:三种初始化及内存分析_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV12J41137hu?p=53&vd_source=b5775c3a4ea16a5306db9c7c1c1486b51.数组内存分析堆:存放new的对象和数组;可以被所有线程共享,不会存放别的对象引用;栈:存放基本变量类型,会包含......
  • Java数组03:数组边界、数组的使用
    本节内容视频链接:https://www.bilibili.com/video/BV12J41137hu?p=55&vd_source=b5775c3a4ea16a5306db9c7c1c1486b5https://www.bilibili.com/video/BV12J41137hu?p=55&vd_source=b5775c3a4ea16a5306db9c7c1c1486b51.数组边界数组下标的合法区间[0,Length-1],如果越界就会报......
  • 用for循环输出数组与初识增强for循环
    1.定义一个数组2.使用for循环设置编码3.输出带有编码的数组使用增强for循环输出数组1.依旧是定义数组2.设置一个新的变量x用于替代数组3.直接输出变量x即可......
  • C语言程序设计-[23] 数组应用(续)
    1、输入一行字符,统计其中有多少个单词。根据以上分析,代码与结果如下:#include"stdio.h"intmain(){charc,pre,str[81];inti,n=0;gets(str);pre='';for(i=0;c=str[i];i++){ if(c!=''&&pre=='') {......
  • 数组
    Arrays类java.util.Arrayspackagecom.yang.array;importjava.util.Arrays;publicclassarraysDemo06{publicstaticvoidmain(String[]args){int[]a={1,3,121,3,4};System.out.println(a);//[I@6bdf28bb//打印数组元素rrays.toS......
  • 通过指针引用数组
    数组元素的指针数组指针:数组中的第一个元素的地址,也就是数组的首地址。指针数组:用来存放数组元素地址的数组,称之为指针数组。//定义一个一般数组inta[]={1,4,9};//使用指针变量存储数组的第一个元素的首地址,也就是数组的首地址int*p=&a[0];//数组首地址//在C......
  • 03-Matlab数组与矩阵
    数组的建立和操作数组算术运算数组信息获取矩阵的建立矩阵的扩展矩阵的块操作矩阵中元素的删除赋值为一对方括号矩阵的转置加点不转置为共轭复数没点的转置为共轭复数矩阵的旋转矩阵的翻转矩阵尺寸的改变矩阵加减法矩阵乘法矩阵除法矩阵中元素......
  • C/C++语言基础--指针三大专题详解2(指针与数组关系,动态内存分配,代码均可)
    本专栏目的更新C/C++的基础语法,包括C++的一些新特性前言指针是C/C++的灵魂,和内存地址相关联,运行的时候速度快,但是同时也有很多细节和规范要注意的,毕竟内存泄漏是很恐怖的指针打算分三篇文章进行讲解,本专题是二,介绍了指针和数组的关系、动态内存如何分配和释放等问题专题......
  • 实现strStr() —— KMP算法(包含next数组的优化)
    目录KMP算法KMP算法的应用前缀表最长公共前后缀为什么要使用前缀表如何计算前缀表前缀表和next数组时间复杂度分析例题28.实现strStr构造next数组 使用next数组来做匹配 前缀表统一减一C++代码实现前缀表(不减一)C++代码实现总结 拓展:next数组的优化 KMP算......