07 2021 档案

线程安全浅说
摘要:线程安全浅说 首先,我们回顾一下线程的特点: 每个线程有自己独立的栈; 同时多个线程共享进程空间中的数据。 竞争 如果每个线程对共享部分数据都是只读的,那么大概不会出现什么问题。但是,如果同时有多个线程尝试对同一份数据进行写入操作,那么最终的结果可能会是不可预期的。考虑这一经典的例子: 共享数据 i 阅读全文

posted @ 2021-07-01 20:39 tur 阅读(90) 评论(0) 推荐(0)

程序员的自我修养(六):保护线程间的共享数据 转载
摘要:程序员的自我修养(六):保护线程间的共享数据 多进程和多线程最本质的区别在于共享和隔离的程度不同。对于多进程方式来说,因为隔离程度高,所以程序员很少需要去担心进程空间的数据被破坏;但是并发任务之间共享数据就变得很困难了。对于多线程方式来说,因为隔离程度低,所以共享数据非常容易;但是,相应地,程序员需 阅读全文

posted @ 2021-07-01 20:25 tur 阅读(119) 评论(0) 推荐(0)

linux线程私有数据---TSD
摘要:linux线程私有数据 TSD 进程内的所有线程共享进程的数据空间,所以全局变量为所有线程共有。在某些场景下,线程需要保存自己的私有数据,这时可以创建线程私有数据(Thread-specific Data)TSD来解决。在线程内部,私有数据可以被线程的各个接口访问,但对其他线程屏蔽。 线程私有数据采 阅读全文

posted @ 2021-07-01 19:48 tur 阅读(280) 评论(0) 推荐(0)

线程的Join和detach
摘要:join是会合,主线程等待Join的线程结束,相当于阻塞调用。 detach是分离,子线程独立出来执行任务,主线程失去对它的控制。 阅读全文

posted @ 2021-07-01 19:45 tur 阅读(464) 评论(0) 推荐(0)

怎么算熟悉多线程编程
摘要:怎么算熟悉多线程编程 JAVA版本 不同平台提供的工具很不一样,看公司要求。关键还是要了解原理。下面的案例差不多是6家左右要求多线程熟练的公司应聘的总结。 了解进程线程的基本概念,能用一种语言在一个平台上实现一个多线程的例子。(这些不会还写熟悉多线程就太大无畏了) 了解为什么要用Mutex之类的工具 阅读全文

posted @ 2021-07-01 19:40 tur 阅读(133) 评论(0) 推荐(0)

间接系统调用打印线程ID
摘要:间接系统调用打印线程ID Linux中,每个进程有一个pid,类型pid_t,由getpid()取得。Linux下的POSIX线程也有一个id,类型 pthread_t,由pthread_self()取得,该id由线程库维护,其id空间是各个进程独立的(即 不同进程中的线程可能有相同的id)。Lin 阅读全文

posted @ 2021-07-01 19:36 tur 阅读(145) 评论(0) 推荐(0)

线程异常终止的资源释放问题
摘要:线程异常终止的资源释放问题 一般来说,Posix的线程终止有两种情况:正常终止和非正常终止。线程主动调用pthread_exit()或者从线程函数中return都将使线程正常退出,这是可预见的退出方式;非正常终止是线程在其他线程的干预下,或者由于自身运行出错(比如访问非法地址)而退出,这种退出方式是 阅读全文

posted @ 2021-07-01 19:35 tur 阅读(670) 评论(0) 推荐(0)

umask
摘要:umask,从字面意思上来讲就是去掉一些掩码,我们知道文件权限是由掩码表示的,去掉一些掩码就是去掉一些权限。 linux系统调用umask 函数原型:mode_t umask(mode_t mask) mask:八进制位掩码值 return: 返回上一次的掩码值,没有失败只有成功。 如Qt在程序工作 阅读全文

posted @ 2021-07-01 17:20 tur 阅读(199) 评论(0) 推荐(0)

treap实现
摘要:简介 Treap=Tree+Heap。Treap本身是一棵二叉搜索树,它的左子树和右子树也分别是一个Treap,和一般的二叉搜索树不同的是,Treap纪录一个额外的数据,就是优先级。Treap在以关键码构成二叉搜索树的同时,还满足堆的性质。这些优先级是是在结点插入时,随机赋予的,Treap根据这些优 阅读全文

posted @ 2021-07-01 16:32 tur 阅读(106) 评论(0) 推荐(1)

gprof使用demo
摘要:test_gprof.c #include<stdio.h> void new_func1(void) { printf("\n Inside new_func1()\n"); int i = 0; for(;i<0xffffffee;i++); return; } void func1(void) 阅读全文

posted @ 2021-07-01 16:29 tur 阅读(47) 评论(0) 推荐(0)

导航