各位老大,我现在用到生产者消费者模式,谁有线程安全的队列的例子啊,我自己写着写着把自己写糊涂了。。。。
by lipeng_927 - C/C++ - 2006-11-28 16:05:26 阅读(1387) 回复(0)
请问消息队列的函数 msgsnd(mid, (void *)&callinfo, sizeof(CallInfo), 0) msgget(key, IPC_CREAT|0666) msgrcv(mid, (void *)&callinfo, sizeof(CallInfo), rec, 0) 是线程安全的吗
Cpp代码 /* * ThreadQueue.h * * Created on: 2008-11-13 * Author: root */ #ifndef THREADQUEUE_H_ #define THREADQUEUE_H_ #include #include using std::cout; using std::endl; const int QUEUESIZE = 20; templateclass Object> class ThreadQueue { public: ThreadQueue(); ~ThreadQueue(); public: bool Enter(Object *obj); ...
请问在linux上,几个线程并发的读写消息队列的话,数据是安全的么?,因为我每个消息中的元素都是一个指针,指向calloc出来的一快内存,所以我虽然不需要进程通讯,但很关心线程安全性。 在man msgsnd的手册上并没有看到有关的说明,我觉得linux的man 还不如freebsd,更不用说sun了
昨天求教了半天没人响应,自己弄了一个,具体有什么不足之处,各位帮忙参考一下:
[code]
#ifdef WIN32
#include
http://topic.csdn.net/u/20070530/10/ec332c1b-fdf6-4f3b-b90d-2d79b2f04a80.html 一个函数被称作“线程安全”的,当且仅当它被多个线程反复调用时,它会一直产生令人期待的正确的结果。反之为“线程不安全”函数,它主要有两种类型: (1)不保护共享变量的函数,包括全局变量和本地静态变量(static)。 我们可以使用POSIX信号量加以解决: Sem_t mutex; ...
A.Vector B.ArrayList C.HashMap D.Hashtable 线程安全的关键是看该类是否能够支持同步。答案选择:A 和 D 本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/22374/showart_148336.html
5. 安全和不安全的接口 本章定义了函数和库的多线程安全等级。 线程安全 多线程接口安全等级 异步安全函数 库的多线程安全等级 5.1线程安全 线程安全是为了避免数据竞争–数据设置的正确性依赖于多个线程修改数据的顺序。 如果不需要共享,则给每个线程分配一个私有的数据拷贝。如果数据必须共享,一定要用同步机制来保证操作的唯一性。 如果一个线程在几个线程同时执行时在逻辑上是正..的。在一个实际的水平上,把安全...
一般而言“线程安全”由多线程对共享资源的访问引起。如果调用某个接口时需要我们自己采取同步措施来保护该接口访问的共享资源,则这样的接口不是线程安全 的.MFC和STL都不是线程安全的. 怎样才能设计出线程安全的类或者接口呢?如果接口中访问的数据都属于私有数据,那么这样的接口是线程安全的.或者几个接口对共享数据都是只读操作,那么这 样的接口也是线程安全的.如果多个接口之间有共享数据,而且有读有写的话,如果设计者自己采取了...
现在有一个全局的count值 我必须判断其,然后对内存进行操作 现在有个问题就是线程间切换的问题 是否会出现,A线程在改变count值时,B线程切换上去,随后更改了count值,进行了内存释放 然后切换回A线程,继续执行count值与内存释放,但此时count和内存已经被释放了; 我将判断语句写为if(!--count) 将其转换为汇编后,是3条语句; mov eax, DWORD PTR _x$[ebp];X的值载入寄存器 sub eax, 1 ;+1 mov D...
最近在看可重入函数,线程安全这些概念,感觉没有明白。有谁能介绍一下。 还有: 1。malloc和free是不安全的,如果一个信号处理函数在调用其中一个,而主线程也在调用其中一个,那么将会混乱,因为他们操作相同的静态数据结构 2。只有当一个函数的调用者给结果分配空间,并且将其指针做为参数传递给另外一个函数时,这两个线程才是安全的。 以上又如何理解