linux网络编程多线程du异步(linux下C编程多线程同步和异步的区别,如何能实现程序的同步)

本文目录
linux下C编程多线程同步和异步的区别,如何能实现程序的同步
同步和异步的区别:
1、同步就是说多个任务之间是有先后关系的,一个任务需要等待另一个任务执行完毕才能继续执行。
2、异步就是说多个任务之间没有先后关系,不需要相互等待各做各的事。
同步编程方法:
1、信号量
2、互斥量
异步无需考虑资源冲突,不需特别处理。
linux里面多线程编程问题
mutex是线程锁,多个线程运行,当遇到临界资源,基本上是全局变量时,需要顺序的操作这些资源,不能都去操作,就像数据库里面的原子操作,所以需要用一个锁来同步这些线程,让他们一个一个的来,谁获得锁,谁有权操作。
pthread_mutex_init是对锁进行初始化,一个参数是锁结构体,一个是属性,属性基本为NULL就行。
pthread_mutex_lock用来加锁,加锁后,别的线程运行到这个地方就不能继续运行了,等待解锁。
pthread_mutex_unlock用来解锁。
pthread_mutex_destroy用来销毁锁。
关于linux下多线程编程
pthread_join 线程停止等待函数没有调用
pthread_create 线程生成后,没有等子线程停止,主线程就先停止了。
主线程停止后,整个程序停止,子线程在没有printf的时候就被结束了。
结论:不是你没有看到结果,而是在子线程printf("..................\n");之前整个程序就已经停止了。
#include 《stdio.h》
#include 《stdlib.h》
#include 《sys/types.h》
#include 《string.h》
#include 《unistd.h》
#include 《pthread.h》
#define FALSE -1
#define TRUE 0
void *shuchu( void *dumy )
{
int j;
printf("..................\n");
}
int main()
{
int i = 0;
int rc = 0;
int ret1;
pthread_t p_thread1;
if(0!=(ret1 = pthread_create(&p_thread1, NULL, shuchu, NULL)))printf("sfdfsdfi\n");
printf("\n",p_thread1);
pthread_join(p_thread1, NULL);
return TRUE;
}

更多文章:
在from子句中可以出现(如何在from 子句中嵌套查询下面的语句在access中出错!)
2026年10月11日 05:20
countif函数统计个数怎么用(countif函数怎么用 详解Excel中countif函数的使用方法)
2026年10月11日 03:30
正则匹配数字之前的字符(正则表达式如何匹配前面是数字、中间是“/”、后面也是数字,就像2/3专业的模式)
2026年10月11日 03:00
orlnsertbootmediinselected(我电脑开机显示这个是什么意思or insert boot media in select)
2026年10月10日 23:00
display的用法(display是什么意思 详解display的含义和用法)
2026年10月10日 22:00
html全部居中代码(怎么让网页居中显示,html如何让网页居中)
2026年10月10日 21:10




