企业网络面临的威胁----视频下载
2010-04-04 17:26
211 查看
当多个线程共享同一数据变量时候,如果我们只是读,不写,那不会有脏数据的问题;如果我们既读又写,但是我们的读写操作总能在一个存储周期之内完成,那么也不会有脏数据的问题。但是,我们大部分情况下都是又读又写,并请每个操作还不是在一个存储周期内完成,想想看,比如:线程1现在要写,并且这个写要占三个存储周期,就在线程1写完1/3,即一个存储周期的时候,这个时候也不知道写的什么,也不知道到底有没有写进去,然后,线程2插进来了,要读这个变量,那就读,读出来什么就不知道,这就是典型的读脏数据。由线程不同步引起怎么办?非常简单的道理,线程1在写的时候,其它线程给我等着,等到线程1写完为止手头也没什么简单的例子,就随手写一个简单的样板#include <stdio.h>
#include <pthread.h>
int global_value=0;
pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
void *thr_fn1(void *arg)
{
pthread_mutex_lock(&mutex);
global_value=555;
pthread_mutex_unlock(&mutex);
return((void *)1);
}
void *thr_fn2(void *arg)
{
pthread_mutex_lock(&mutex);
if(global_value==555) { printf("5555555555\n"); }
pthread_mutex_unlock(&mutex);
pthread_exit((void *)1);
}
int main(void)
{
int err;
pthread_t tid1, tid2;
void *tret;
err = pthread_create(&tid1, NULL, thr_fn1, NULL);
err = pthread_create(&tid2, NULL, thr_fn2, NULL);
err = pthread_join(tid1, NULL);
err = pthread_join(tid2, NULL);
//当对线程的返回值不感兴趣时,置为NULL
exit(0);
}
其实,在这个程序完全没必要用上同步锁,只是为了演示一下怎么用当然,同步锁还有很多别的方法,本人用的也就基本上这么简单啦关于死锁的问题,还是说下1.在同一线程里面连续锁两次,肯定死翘2.锁了之后,进行操作的时间无限长,连解锁都没机会,其实这跟锁没关系,是程序的问题,但还是提一下3.一个线程锁了之后,忘记解锁,那也肯定出问题
本文出自 “nnssll” 博客,谢绝转载!
#include <pthread.h>
int global_value=0;
pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
void *thr_fn1(void *arg)
{
pthread_mutex_lock(&mutex);
global_value=555;
pthread_mutex_unlock(&mutex);
return((void *)1);
}
void *thr_fn2(void *arg)
{
pthread_mutex_lock(&mutex);
if(global_value==555) { printf("5555555555\n"); }
pthread_mutex_unlock(&mutex);
pthread_exit((void *)1);
}
int main(void)
{
int err;
pthread_t tid1, tid2;
void *tret;
err = pthread_create(&tid1, NULL, thr_fn1, NULL);
err = pthread_create(&tid2, NULL, thr_fn2, NULL);
err = pthread_join(tid1, NULL);
err = pthread_join(tid2, NULL);
//当对线程的返回值不感兴趣时,置为NULL
exit(0);
}
其实,在这个程序完全没必要用上同步锁,只是为了演示一下怎么用当然,同步锁还有很多别的方法,本人用的也就基本上这么简单啦关于死锁的问题,还是说下1.在同一线程里面连续锁两次,肯定死翘2.锁了之后,进行操作的时间无限长,连解锁都没机会,其实这跟锁没关系,是程序的问题,但还是提一下3.一个线程锁了之后,忘记解锁,那也肯定出问题
本文出自 “nnssll” 博客,谢绝转载!
相关文章推荐
- 企业网络所面临的安全威胁
- 企业网络安全基本方案----视频下载
- KeepVid Pro 7.0.1.2网络视频超强下载工具安装教程(含:注册机序列号)
- php视频教程打包下载 - 网络上最好的php视频教程
- 企业网络信息安全管理规划方案免费下载
- 中小型企业网络面临五大安全挑战
- IBM Tivoli Netview在企业网络管理中的实践(附视频)
- IBM Tivoli Netview在企业网络管理中的实践(附视频)
- AFNetworking下载网络相关的附件(音视频)等到本地app包中做离线来提高用户体验
- 网络视频:企业营销新机遇
- 恶意软件分析师:面临社交网络威胁的用户已10亿
- 从网络上下载大文件(视频)
- 十大网络危险行为 威胁企业安全
- 网络最强PHP开发工具+电子书+视频教程等资料下载汇总
- 蛙蛙推荐:微软网络讲座系列教程视频下载(2004年1月到2005年4越)
- AutoCAD 2014 新特性和新API网络视频讲座视频录像及示例代码下载
- NSURLSession从网络上下载资源,此程序下载的是视频
- 如何避免来自企业内部的网络安全威胁(一)
- 分享马哥Linux全套视频教程,马哥Linux系列之零基础企业级Linux系统工程师网络高级就业班培训,下载完全免费,要保证5G左右的空间哦