Unix环境高级编程-学习-09-多线程之读写锁与条件变量(包含线程池的部分实现与测试验证)

目录

 一、多线程相关文章链接

二、自由抒发

1、读写锁

2、条件变量

三、函数介绍

1、pthread_rwlock_init

(1)声明

(2)作用

(3)参数

(4)返回值

(5)注意点

(6)宏

2、pthread_rwlock_destroy

(1)声明

(2)作用

(3)参数

(4)返回值

(5)注意点

(6)宏

3、pthread_rwlock_rdlock

(1)声明

(2)作用

(3)参数

(4)返回值

(5)注意点

(6)宏

4、pthread_rwlock_tryrdlock

(1)声明

(2)作用

(3)参数

(4)返回值

(5)注意点

(6)宏

5、pthread_rwlock_timedrdlock

(1)声明

(2)作用

(3)参数

(4)返回值

(5)注意点

(6)宏

6、pthread_rwlock_wrlock

(1)声明

(2)作用

(3)参数

(4)返回值

(5)注意点

(6)宏

7、pthread_rwlock_trywrlock

(1)声明

(2)作用

(3)参数

(4)返回值

(5)注意点

(6)宏

8、pthread_rwlock_timedwrlock

(1)声明

(2)作用

(3)参数

(4)返回值

(5)注意点

(6)宏

9、pthread_rwlock_unlock

(1)声明

(2)作用

(3)参数

(4)返回值

(5)注意点

(6)宏

10、pthread_rwlockattr_init

(1)声明

(2)作用

(3)参数

(4)返回值

(5)注意点

(6)宏​​​​

11、pthread_rwlockattr_destroy

(1)声明

(2)作用

(3)参数

(4)返回值

(5)注意点

(6)宏​​​​

12、pthread_rwlockattr_getpshared

(1)声明

(2)作用

(3)参数

(4)返回值

(5)注意点

(6)宏​​​​

13、pthread_rwlockattr_setpshared

(1)声明

(2)作用

(3)参数

(4)返回值

(5)注意点

(6)宏​​​​

14、pthread_rwlockattr_getkind_np

(1)声明

(2)作用

(3)参数

(4)返回值

(5)注意点

(6)宏​​​​

15、pthread_rwlockattr_setkind_np

(1)声明

(2)作用

(3)参数

(4)返回值

(5)注意点

(6)宏​​​​

16、pthread_cond_init

(1)声明

(2)作用

(3)参数

(4)返回值

(5)注意点

(6)宏​​​​

四、队列测试验证

1、int类型

(1)Demo

(2)编译

(3)验证

 2、char[]类型

(1)Demo

(2)编译

(3)验证

五、线程池测试验证

1、int类型

(1)示意图

(2)Demo

(3)编译

(4)验证

  2、char[]类型

(1)Demo

(2)编译

(3)验证

六、性能比对

1、int类型

(1)队列

(2)线程池

 (3)总结

2、char[]类型

(1)队列

(2)线程池

 (3)总结


 一、多线程相关文章链接

 1、《Unix环境高级编程-学习-06-多线程之创建、销毁、属性获取和设置》

 2、《Unix环境高级编程-学习-07-多线程之互斥锁》

 3、《Unix环境高级编程-学习-08-多线程之自旋锁与屏障》

二、自由抒发

如果大家想多学C的知识,除了看书、多练以外,也要多看linux自带的手册,通过man命令查看,内容很全,真的很棒,也同时提高英文文章的阅读能力,最后祝大家心想事成。

1、读写锁

对于某些临界资源,我们读多写少,例如一个数组,我们只是想看其数据,那我们可以读取,同时其他人也可以读取,并不影响读取到的内容,所以读和读之间不互斥,这就是读锁的作用,但有时也避免不了修改操作,所以需要加写锁,读和写是互斥,如果不互斥,会发生什么呢,我数据写到一半,你正好来读取数据,读到的就是错误数据,所以读和写必须是互斥的,我们对于读写锁的合理使用可以适当提高程序的并发。

2、条件变量

互斥锁在同一时间点只有一个人可以访问临界资源,但实际开发中互斥锁并不满足我们的所有需求,例如我们需要等到临界资源到达某个状态,才可以访问,互斥锁实现起来就比较繁琐。像生产者消费者模型中的队列就需要用到条件变量来实现。


三、函数介绍

1、pthread_rwlock_init

(1)声明

int pthread_rwlock_init(pthread_rwlock_t *__restrict__ __rwlock, const pthread_rwlockattr_t *__restrict__ __attr);

(2)作用

初始化读写锁。

(3)参数

参数名描述
__rwlock需要初始化的读写锁。
__attr读写锁的属性。

(4)返回值

名称描述
成功返回0。
失败返回错误码。

(5)注意点

如果pthread_rwlock_init()调用已经初始化过的读写锁,结果是未定义。

如果在未初始化的情况下使用读写锁,则结果是未定义的。

(6)宏

无。

2、pthread_rwlock_destroy

(1)声明

int pthread_rwlock_destroy(pthread_rwlock_t *__rwlock);

(2)作用

销毁读写锁。

(3)参数

参数名描述
__rwlock需要销毁的读写锁。

(4)返回值

名称描述
成功返回0。
失败返回错误码。

(5)注意点

销毁一个未初始化的读写锁,行为是未知的。

当读写锁被使用时,进行销毁,结果是未知的。

(6)宏

无。

3、pthread_rwlock_rdlock

(1)声明

int pthread_rwlock_rdlock(pthread_rwlock_t *__rwlock);

(2)作用

加读锁。

(3)参数

参数名描述
__rwlock需要加读锁的读写锁变量。

(4)返回值

名称描述
成功返回0。
失败返回错误码。

(5)注意点

一个线程加多少次读锁就需要解多少次读锁。

一个线程拿到读锁后,继续拿写锁,会导致死锁。

如果在未初始化的读写锁上加读锁,行为是未定义的。

如果信号被传送到等待读写锁进行读取的线程,则在从信号处理程序返回时,线程会继续等待读写锁进行读取,就好像它没有中断一样。

(6)宏

名称描述
EINVAL读写锁指定的值不引用初始化的读写锁对象。
EAGAIN无法获取读锁,因为已超出读写锁的最大读锁数。
EDEADLK当前线程已经拥有用于写入的读写锁。

4、pthread_rwlock_tryrdlock

(1)声明

int pthread_rwlock_tryrdlock(pthread_rwlock_t *__rwlock);

(2)作用

尝试加读锁。

(3)参数

参数名描述
__rwlock需要加读锁的读写锁变量。

(4)返回值

名称描述
成功返回0。
失败返回错误码。

(5)注意点

一个线程加多少次读锁就需要解多少次读锁。

一个线程拿到读锁后,继续拿写锁,会导致死锁。

如果在未初始化的读写锁上加读锁,行为是未定义的。

如果信号被传送到等待读写锁进行读取的线程,则在从信号处理程序返回时,线程会继续等待读写锁进行读取,就好像它没有中断一样。

(6)宏

名称描述
EINVAL读写锁指定的值不引用初始化的读写锁对象。
EAGAIN无法获取读锁,因为已超出读写锁的最大读锁数。
EBUSY无法获取读写锁进行读取,因为写入者持有该锁,或者具有适当优先级的写入者被锁住。

5、pthread_rwlock_timedrdlock

(1)声明

int pthread_rwlock_timedrdlock(pthread_rwlock_t *__restrict__ __rwlock, const struct timespec *__restrict__ __abstime);

(2)作用

在绝对时间内加读锁,如果这个时间内没有拿到则抛错。

(3)参数

参数名描述
__rwlock需要加读锁的读写锁变量。
__abstime绝对时间。

(4)返回值

名称描述
成功返回0。
失败返回错误码。

(5)注意点

一个线程拿到读锁后,继续拿写锁,会导致死锁。

如果在未初始化的读写锁上加读锁,行为是未定义的。

如果信号被传送到等待读写锁进行读取的线程,则在从信号处理程序返回时,线程会继续等待读写锁进行读取,就好像它没有中断一样。

(6)宏

名称描述
EINVAL读写锁指定的值不引用初始化的读写锁对象。
EAGAIN无法获取读锁,因为已超出读写锁的最大读锁数。
EDEADLK当前线程已经拥有用于写入的读写锁。
ETIMEDOUT指定的绝对时间内无法获得锁。

6、pthread_rwlock_wrlock

(1)声明

int pthread_rwlock_wrlock(pthread_rwlock_t *__rwlock);

(2)作用

加写锁。

(3)参数

参数名描述
__rwlock需要加写锁的读写锁变量。

(4)返回值

名称描述
成功返回0。
失败返回错误码。

(5)注意点

1、Implementations may favor writers over readers to avoid writer starvation.

底层实现相较于读者更青睐于写者,要避免饥饿写。

这里有一个名词饥饿写,什么是饥饿写,我们问一下chatgpt:

在C语言中,读写锁是一种用于多线程编程的同步机制。它允许多个线程同时读取共享数据,但只允许一个线程进行写操作。读写锁中的饥饿写是指当有大量读操作时,写操作可能会被长时间地延迟,导致写操作的线程一直无法获取到写锁的情况。读写锁的设计目的是为了提高并发性能,因为读操作不会修改共享数据,所以多个线程可以同时进行读操作而不会产生冲突。但是当有写操作时,需要独占地访问共享数据,因此需要获取写锁。如果读操作非常频繁,那么写操作可能会一直等待读操作完成,从而导致饥饿写的问题。饥饿写可能会导致写操作的线程长时间地等待,降低了系统的响应性能。为了解决这个问题,可以采用一些策略来减少饥饿写的影响,例如增加写操作的优先级、限制读操作的数量等。

2、一个线程拿到写锁后,继续拿读写锁,会导致死锁。

3、如果在未初始化的读写锁上加写锁,行为是未定义的。

4、如果信号被传送到等待读写锁进行读取的线程,则在从信号处理程序返回时,线程会继续等待读写锁进行写入,就好像它没有中断一样。

(6)宏

名称描述
EINVAL读写锁指定的值不引用初始化的读写锁对象。
EDEADLK当前线程已经拥有用于写入的读写锁。

7、pthread_rwlock_trywrlock

(1)声明

int pthread_rwlock_trywrlock(pthread_rwlock_t *__rwlock);

(2)作用

尝试加写锁。

(3)参数

参数名描述
__rwlock需要加写锁的读写锁变量。

(4)返回值

名称描述
成功返回0。
失败返回错误码。

(5)注意点

同pthread_rwlock_wrlock。

(6)宏

名称描述
EINVAL读写锁指定的值不引用初始化的读写锁对象。
EBUSY无法获取读写锁进行读取,因为写入者持有该锁,或者具有适当优先级的写入者被锁住。

8、pthread_rwlock_timedwrlock

(1)声明

int pthread_rwlock_timedwrlock(pthread_rwlock_t *__restrict__ __rwlock, const struct timespec *__restrict__ __abstime);

(2)作用

对读写锁变量进行写加锁,指定时间内未拿到锁函数返回。

(3)参数

参数名描述
__rwlock需要加写锁的读写锁变量。
__abstime绝对时间。

(4)返回值

名称描述
成功返回0。
失败返回错误码。

(5)注意点

一个线程拿到读写锁后,继续拿写锁,会导致死锁。

如果在未初始化的读写锁上加写锁,行为是未定义的。

如果信号被传送到等待读写锁进行写入的线程,则在从信号处理程序返回时,线程会继续等待读写锁进行写入,就好像它没有中断一样。

(6)宏

名称描述
EINVAL读写锁指定的值不引用初始化的读写锁对象。
EDEADLK当前线程已经拥有用于写入的读写锁。
ETIMEDOUT指定的绝对时间内无法获得锁。

9、pthread_rwlock_unlock

(1)声明

int pthread_rwlock_unlock(pthread_rwlock_t *__rwlock);

(2)作用

对读写锁变量进行解锁。

(3)参数

参数名描述
__rwlock需要解锁的读写锁变量。

(4)返回值

名称描述
成功返回0。
失败返回错误码。

(5)注意点

1、如果调用解读写锁函数的线程没有持有读写锁,结果是未知的。

2、如果锁在可用时有线程被阻塞,则调度策略应确定哪个线程应获得锁。 如果支持“线程执行调度”选项,则当使用调度策略 SCHED_FIFO、SCHED_RR 或 SCHED_SPORADIC 执行的线程正在等待锁时,当锁可用时,它们应按优先级顺序获取锁。对于优先级相等的线程,写入锁应优先于读锁。 如果不支持“线程执行调度”选项,则由实现定义写入锁是否优先于读锁。

SCHED_FIFO、SCHED_RR、SCHED_SPORADIC这三个宏需要用pthread_setschedparam函数配置,后面我摸索一下,再给大家介绍一下。

3、如果在未初始化的读写锁上解锁,行为是未定义的。

(6)宏

​​​​​

名称描述
EINVAL读写锁指定的值不引用初始化的读写锁对象。
EPERM当前线程未持有读写锁。

10、pthread_rwlockattr_init

(1)声明

int pthread_rwlockattr_init(pthread_rwlockattr_t *__attr);

(2)作用

初始化读写锁属性。

(3)参数

参数名描述
__attr需要初始化的读写锁属性。

(4)返回值

名称描述
成功返回0。
失败返回错误码。

(5)注意点

1、如果使用pthread_rwlockattr_init初始化一个已经初始化过的读写锁属性,结果是未知的。

(6)宏​​​​

名称描述
ENOMEM内存不足,无法初始化读写锁属性对象。

11、pthread_rwlockattr_destroy

(1)声明

int pthread_rwlockattr_destroy(pthread_rwlockattr_t *__attr);

(2)作用

销毁读写锁属性。

(3)参数

参数名描述
__attr需要销毁的读写锁属性。

(4)返回值

名称描述
成功返回0。
失败返回错误码。

(5)注意点

1、在对象被销毁后以其他方式引用对象的结果是未定义的。

(6)宏​​​​

名称描述
EINVAL指定的__attr值无效。

12、pthread_rwlockattr_getpshared

(1)声明

int pthread_rwlockattr_getpshared(const pthread_rwlockattr_t *__restrict__ __attr, int *__restrict__ __pshared);

(2)作用

获取读写锁变量进程共享属性值。

(3)参数

参数名描述
__attr读写锁属性。
__pshared共享属性值。

(4)返回值

名称描述
成功返回0。
失败返回错误码。

(5)注意点

1、如果指定的共享属性是PTHREAD_PROCESS_PRIVATE,多进程之间使用读写锁,行为是未定义的。

(6)宏​​​​

名称描述
EINVAL指定的__attr值无效。

名称描述
PTHREAD_PROCESS_PRIVATE同一个进程内的多个线程可用。
PTHREAD_PROCESS_SHARED多个进程之间可用。

13、pthread_rwlockattr_setpshared

(1)声明

int pthread_rwlockattr_setpshared(pthread_rwlockattr_t *__attr, int __pshared);

(2)作用

设置读写锁变量进程共享属性值。

(3)参数

参数名描述
__attr读写锁属性。
__pshared共享属性值。

(4)返回值

名称描述
成功返回0。
失败返回错误码。

(5)注意点

1、如果指定的共享属性是PTHREAD_PROCESS_PRIVATE,多进程之间使用读写锁,行为是未定义的。

(6)宏​​​​

名称描述
EINVAL指定的__attr值无效。

名称描述
PTHREAD_PROCESS_PRIVATE同一个进程内的多个线程可用。
PTHREAD_PROCESS_SHARED多个进程之间可用。

14、pthread_rwlockattr_getkind_np

(1)声明

int pthread_rwlockattr_getkind_np(const pthread_rwlockattr_t *__restrict__ __attr, int *__restrict__ __pref);

(2)作用

获取读写锁变量偏好属性值。

(3)参数

参数名描述
__attr读写锁属性。
__pref获取到的读写锁变量偏好属性值。

(4)返回值

名称描述
成功返回0。
失败返回错误码。

(5)注意点

这个函数man手册里和书本里没有介绍,是chatgpt告诉我的,大家知道相关资料在哪里查找,也和我说说。

(6)宏​​​​

名称描述
PTHREAD_RWLOCK_PREFER_READER_NP该宏用于设置读写锁的偏好模式为读者优先。在读写锁处于等待状态时,如果有多个读者和一个写者同时请求锁,读者会被优先选择。
PTHREAD_RWLOCK_PREFER_WRITER_NP该宏用于设置读写锁的偏好模式为写者优先。在读写锁处于等待状态时,如果有一个读者和一个写者同时请求锁,写者会被优先选择。
PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP该宏用于设置读写锁的偏好模式为非递归写者优先。在读写锁处于等待状态时,如果有一个读者和一个写者同时请求锁,写者会被优先选择,并且写者不能递归地获取锁。

15、pthread_rwlockattr_setkind_np

(1)声明

int pthread_rwlockattr_setkind_np(pthread_rwlockattr_t *__attr, int __pref);

(2)作用

设置读写锁变量偏好属性值。

(3)参数

参数名描述
__attr读写锁属性。
__pref设置的读写锁变量偏好属性值。

(4)返回值

名称描述
成功返回0。
失败返回错误码。

(5)注意点

这个函数man手册里和书本里没有介绍,是chatgpt告诉我的,大家知道相关资料在哪里查找,也和我说说。

(6)宏​​​​

名称描述
PTHREAD_RWLOCK_PREFER_READER_NP该宏用于设置读写锁的偏好模式为读者优先。在读写锁处于等待状态时,如果有多个读者和一个写者同时请求锁,读者会被优先选择。
PTHREAD_RWLOCK_PREFER_WRITER_NP该宏用于设置读写锁的偏好模式为写者优先。在读写锁处于等待状态时,如果有一个读者和一个写者同时请求锁,写者会被优先选择。
PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP该宏用于设置读写锁的偏好模式为非递归写者优先。在读写锁处于等待状态时,如果有一个读者和一个写者同时请求锁,写者会被优先选择,并且写者不能递归地获取锁。

16、pthread_cond_init

(1)声明

int pthread_cond_init(pthread_cond_t *__restrict__ __cond, const pthread_condattr_t *__restrict__ __cond_attr);
PTHREAD_COND_INITIALIZER;

第一个动态初始化,第二个静态初始化。

(2)作用

初始化条件变量。

(3)参数

参数名描述
__cond条件变量。
__cond_attr条件变量属性。

(4)返回值

名称描述
成功返回0。
失败返回错误码。

(5)注意点

1、只有 cond 本身可用于执行同步。 在对 pthread_cond_wait()、pthread_cond_timedwait()、pthread_cond_signal()、pthread_cond_broadcast() 和 pthread_cond_destroy() 的调用中引用 cond 副本的结果是未定义的。

2、尝试去初始化一个已经初始化的条件变量,结果是未定义的。

(6)宏​​​​

名称描述
EAGAIN系统缺少初始化另一个条件变量所需的资源(内存除外)。
ENOMEM内存不足,无法初始化条件变量。
EBUSY该实现检测到尝试重新初始化 cond 引用的对象,cond 是以前初始化但尚未销毁的条件变量。
EINVAL指定的__cond_attr值无效。


由于篇幅有限,条件变量的其他函数介绍将在下一章中体现,感觉像是到达CSDN的发布文章字数限制了,之前写的条件变量等待函数都被回退到历史版本了。

四、队列测试验证

1、int类型

实现内容为:多个生产者和消费者线程同时操作队列,从中放入数据和拿出数据。10个消费者、10个生产者,每个生产者生成20个数据,每个生产者线程分别生产[0-20),[20-40),[40-60),后面以此类推,我们可以看最后的数据如果是0-199不重复的200个数,说明我们实现的没有问题。

我这边直接把互斥锁和条件变量嵌入到队列相关函数中了,这样后续实现线程池或者进程池时,可以不考虑互斥锁和条件变量相关的问题,使用上会方便很多。

(1)Demo

#include "SqQueue.h"#define TEST_CONSUMER_THREAD_NUM  10
#define TEST_PRODUCER_THREAD_NUM  10
#define TEST_INTERVAL_VAL         20
#define PRODUCER_SUM_VAL          (TEST_PRODUCER_THREAD_NUM * TEST_INTERVAL_VAL)
#define CONSUMER_VAL              (PRODUCER_SUM_VAL / TEST_CONSUMER_THREAD_NUM)#define QUEUE_LEN                 100#define GLOBAL_ARRAY_COL_NUM      2
#define GLOBAL_ARRAY_ROW_NUM      TEST_PRODUCER_THREAD_NUMint GlobalArray[GLOBAL_ARRAY_ROW_NUM][GLOBAL_ARRAY_COL_NUM];typedef struct OneTaskSt
{SqQueue         *Queue;int             AccessIndex;OneThrdMutexSt  *Mutex;       
}OneTaskSt;void* Producer(void* Arg)
{int       i;int       Idx;OneTaskSt *Task = (OneTaskSt *)Arg;THRD_MUTEX_LOCK_F(Task->Mutex);Idx = Task->AccessIndex;Task->AccessIndex++;THRD_MUTEX_UNLOCK_F(Task->Mutex);for ( i = GlobalArray[Idx][0]; i < GlobalArray[Idx][1]; i++){EnterSqQueue(Task->Queue, &i);LogFormat(Info,"Producer           : OK, Val : %d.\n",i);   }THRD_EXIT(SUCCESS_FLAG);
}void* Consumer(void* Arg)
{int       Val;int       Cnt   = 0;OneTaskSt *Task = (OneTaskSt *)Arg;while(Cnt != CONSUMER_VAL){if(LeaveSqQueue(Task->Queue, &Val) != SUCCESS_FLAG){continue;}LogFormat(Info,"Consumer           : OK, Val : %d.\n",Val);Cnt++;    }THRD_EXIT(SUCCESS_FLAG);
}Status main()
{int             i;void            *ThrdExitState     = NULL;OneTaskSt       Task;OneThrdSt       **ConsumerArray    = (OneThrdSt **)MyMalloc(sizeof(OneThrdSt *) * TEST_CONSUMER_THREAD_NUM);OneThrdSt       **ProducerArray    = (OneThrdSt **)MyMalloc(sizeof(OneThrdSt *) * TEST_PRODUCER_THREAD_NUM);InitAllSqQueue(&(Task.Queue), QUEUE_LEN, INT_TYPE_FLAG, PTHREAD_PROCESS_PRIVATE, PTHREAD_MUTEX_ERRORCHECK, PTHREAD_MUTEX_STALLED, 2, 10000,CLOCK_REALTIME);OneThrdMutexCreate(&(Task.Mutex),PTHREAD_PROCESS_PRIVATE,PTHREAD_MUTEX_ERRORCHECK,PTHREAD_MUTEX_STALLED,2,1);Task.AccessIndex = 0;for ( i = 0; i < GLOBAL_ARRAY_ROW_NUM; i++){GlobalArray[i][0] = i * TEST_INTERVAL_VAL;GlobalArray[i][1] = GlobalArray[i][0] + TEST_INTERVAL_VAL;}for ( i = 0; i < TEST_PRODUCER_THREAD_NUM; i++){OneThrdCreate(&(ProducerArray[i]), PTHREAD_CREATE_JOINABLE,PTHREAD_STACK_MIN, ONE_PAGE_MEM_SIZE,Producer, &Task);}for ( i = 0; i < TEST_CONSUMER_THREAD_NUM; i++){OneThrdCreate(&(ConsumerArray[i]), PTHREAD_CREATE_JOINABLE,PTHREAD_STACK_MIN, ONE_PAGE_MEM_SIZE,Consumer, &Task);}for ( i = 0; i < TEST_PRODUCER_THREAD_NUM; i++){ThrdWait(ProducerArray[i]->ThreadId, &ThrdExitState);LogFormat(Debug,"ThrdExitState      : %ld.\n",(long)ThrdExitState);OneThrdFree(&(ProducerArray[i]));}for ( i = 0; i < TEST_CONSUMER_THREAD_NUM; i++){ThrdWait(ConsumerArray[i]->ThreadId, &ThrdExitState);LogFormat(Debug,"ThrdExitState      : %ld.\n",(long)ThrdExitState);OneThrdFree(&(ConsumerArray[i]));}free(ConsumerArray);ConsumerArray = NULL;free(ProducerArray);ProducerArray = NULL;PrintfSqQueue(Task.Queue, Debug);DestroySqQueue(&(Task.Queue));OneThrdMutexFree(&(Task.Mutex));return SUCCESS_FLAG;
}

(2)编译

[gbase@czg2 SqQueue]$ make clean
rm -rf TestSqQueue
rm -rf TestThreadQ
[gbase@czg2 SqQueue]$ make
gcc -Wall -Wextra -O3 -std=gnu11  TestThreadQ.c -o TestThreadQ -I /opt/Developer/ComputerLanguageStudy/C/DataStructureTestSrc/PublicFunction/ -I /opt/Developer/ComputerLanguageStudy/C/DataStructureTestSrc/Log/ -I /opt/Developer/ComputerLanguageStudy/C/DataStructureTestSrc/PublicFunction/Pthread/ -L /opt/Developer/ComputerLanguageStudy/C/DataStructureTestSrc/PublicFunction/Make/Libs/ -L /usr/lib64/ -l PublicFunction -l Log -l MyThread -l SqQueue
gcc -Wall -Wextra -O3 -std=gnu11  main.c -o TestSqQueue -I /opt/Developer/ComputerLanguageStudy/C/DataStructureTestSrc/PublicFunction/ -I /opt/Developer/ComputerLanguageStudy/C/DataStructureTestSrc/Log/ -I /opt/Developer/ComputerLanguageStudy/C/DataStructureTestSrc/PublicFunction/Pthread/ -L /opt/Developer/ComputerLanguageStudy/C/DataStructureTestSrc/PublicFunction/Make/Libs/ -L /usr/lib64/ -l PublicFunction -l Log -l MyThread -l SqQueue

(3)验证

消费者和生产者分别拿到了0-199,没有重复消费、多消费、少消费的情况发生,说明我们实现的正确。

[gbase@czg2 SqQueue]$ ./TestThreadQ |sort -t ":" -k 5 -n
2024-04-08 10:03:10-P[45227]-T[45231]-[Info ]-Producer           : OK, Val : 0.
2024-04-08 10:03:10-P[45227]-T[45241]-[Info ]-Consumer           : OK, Val : 0.
2024-04-08 10:03:10-P[45227]-T[45231]-[Info ]-Producer           : OK, Val : 1.
2024-04-08 10:03:10-P[45227]-T[45243]-[Info ]-Consumer           : OK, Val : 1.
2024-04-08 10:03:10-P[45227]-T[45231]-[Info ]-Producer           : OK, Val : 2.
2024-04-08 10:03:10-P[45227]-T[45243]-[Info ]-Consumer           : OK, Val : 2.
2024-04-08 10:03:10-P[45227]-T[45231]-[Info ]-Producer           : OK, Val : 3.
2024-04-08 10:03:10-P[45227]-T[45243]-[Info ]-Consumer           : OK, Val : 3.
2024-04-08 10:03:10-P[45227]-T[45231]-[Info ]-Producer           : OK, Val : 4.
2024-04-08 10:03:10-P[45227]-T[45243]-[Info ]-Consumer           : OK, Val : 4.
2024-04-08 10:03:10-P[45227]-T[45231]-[Info ]-Producer           : OK, Val : 5.
2024-04-08 10:03:10-P[45227]-T[45243]-[Info ]-Consumer           : OK, Val : 5.
2024-04-08 10:03:10-P[45227]-T[45231]-[Info ]-Producer           : OK, Val : 6.
2024-04-08 10:03:10-P[45227]-T[45243]-[Info ]-Consumer           : OK, Val : 6.
2024-04-08 10:03:10-P[45227]-T[45231]-[Info ]-Producer           : OK, Val : 7.
2024-04-08 10:03:10-P[45227]-T[45243]-[Info ]-Consumer           : OK, Val : 7.
2024-04-08 10:03:10-P[45227]-T[45231]-[Info ]-Producer           : OK, Val : 8.
2024-04-08 10:03:10-P[45227]-T[45243]-[Info ]-Consumer           : OK, Val : 8.
2024-04-08 10:03:10-P[45227]-T[45231]-[Info ]-Producer           : OK, Val : 9.
2024-04-08 10:03:10-P[45227]-T[45243]-[Info ]-Consumer           : OK, Val : 9.
2024-04-08 10:03:10-P[45227]-T[45231]-[Info ]-Producer           : OK, Val : 10.
2024-04-08 10:03:10-P[45227]-T[45244]-[Info ]-Consumer           : OK, Val : 10.
2024-04-08 10:03:10-P[45227]-T[45231]-[Info ]-Producer           : OK, Val : 11.
2024-04-08 10:03:10-P[45227]-T[45245]-[Info ]-Consumer           : OK, Val : 11.
2024-04-08 10:03:10-P[45227]-T[45231]-[Info ]-Producer           : OK, Val : 12.
2024-04-08 10:03:10-P[45227]-T[45242]-[Info ]-Consumer           : OK, Val : 12.
2024-04-08 10:03:10-P[45227]-T[45231]-[Info ]-Producer           : OK, Val : 13.
2024-04-08 10:03:10-P[45227]-T[45246]-[Info ]-Consumer           : OK, Val : 13.
2024-04-08 10:03:10-P[45227]-T[45231]-[Info ]-Producer           : OK, Val : 14.
2024-04-08 10:03:10-P[45227]-T[45239]-[Info ]-Consumer           : OK, Val : 14.
2024-04-08 10:03:10-P[45227]-T[45231]-[Info ]-Producer           : OK, Val : 15.
2024-04-08 10:03:10-P[45227]-T[45240]-[Info ]-Consumer           : OK, Val : 15.
2024-04-08 10:03:10-P[45227]-T[45231]-[Info ]-Producer           : OK, Val : 16.
2024-04-08 10:03:10-P[45227]-T[45241]-[Info ]-Consumer           : OK, Val : 16.
2024-04-08 10:03:10-P[45227]-T[45231]-[Info ]-Producer           : OK, Val : 17.
2024-04-08 10:03:10-P[45227]-T[45247]-[Info ]-Consumer           : OK, Val : 17.
2024-04-08 10:03:10-P[45227]-T[45231]-[Info ]-Producer           : OK, Val : 18.
2024-04-08 10:03:10-P[45227]-T[45248]-[Info ]-Consumer           : OK, Val : 18.
2024-04-08 10:03:10-P[45227]-T[45231]-[Info ]-Producer           : OK, Val : 19.
2024-04-08 10:03:10-P[45227]-T[45241]-[Info ]-Consumer           : OK, Val : 19.
2024-04-08 10:03:10-P[45227]-T[45229]-[Info ]-Producer           : OK, Val : 20.
2024-04-08 10:03:10-P[45227]-T[45241]-[Info ]-Consumer           : OK, Val : 20.
2024-04-08 10:03:10-P[45227]-T[45229]-[Info ]-Producer           : OK, Val : 21.
2024-04-08 10:03:10-P[45227]-T[45241]-[Info ]-Consumer           : OK, Val : 21.
2024-04-08 10:03:10-P[45227]-T[45229]-[Info ]-Producer           : OK, Val : 22.
2024-04-08 10:03:10-P[45227]-T[45241]-[Info ]-Consumer           : OK, Val : 22.
2024-04-08 10:03:10-P[45227]-T[45229]-[Info ]-Producer           : OK, Val : 23.
2024-04-08 10:03:10-P[45227]-T[45241]-[Info ]-Consumer           : OK, Val : 23.
2024-04-08 10:03:10-P[45227]-T[45229]-[Info ]-Producer           : OK, Val : 24.
2024-04-08 10:03:10-P[45227]-T[45241]-[Info ]-Consumer           : OK, Val : 24.
2024-04-08 10:03:10-P[45227]-T[45229]-[Info ]-Producer           : OK, Val : 25.
2024-04-08 10:03:10-P[45227]-T[45241]-[Info ]-Consumer           : OK, Val : 25.
2024-04-08 10:03:10-P[45227]-T[45229]-[Info ]-Producer           : OK, Val : 26.
2024-04-08 10:03:10-P[45227]-T[45241]-[Info ]-Consumer           : OK, Val : 26.
2024-04-08 10:03:10-P[45227]-T[45229]-[Info ]-Producer           : OK, Val : 27.
2024-04-08 10:03:10-P[45227]-T[45241]-[Info ]-Consumer           : OK, Val : 27.
2024-04-08 10:03:10-P[45227]-T[45229]-[Info ]-Producer           : OK, Val : 28.
2024-04-08 10:03:10-P[45227]-T[45241]-[Info ]-Consumer           : OK, Val : 28.
2024-04-08 10:03:10-P[45227]-T[45229]-[Info ]-Producer           : OK, Val : 29.
2024-04-08 10:03:10-P[45227]-T[45243]-[Info ]-Consumer           : OK, Val : 29.
2024-04-08 10:03:10-P[45227]-T[45229]-[Info ]-Producer           : OK, Val : 30.
2024-04-08 10:03:10-P[45227]-T[45243]-[Info ]-Consumer           : OK, Val : 30.
2024-04-08 10:03:10-P[45227]-T[45229]-[Info ]-Producer           : OK, Val : 31.
2024-04-08 10:03:10-P[45227]-T[45243]-[Info ]-Consumer           : OK, Val : 31.
2024-04-08 10:03:10-P[45227]-T[45229]-[Info ]-Producer           : OK, Val : 32.
2024-04-08 10:03:10-P[45227]-T[45243]-[Info ]-Consumer           : OK, Val : 32.
2024-04-08 10:03:10-P[45227]-T[45229]-[Info ]-Producer           : OK, Val : 33.
2024-04-08 10:03:10-P[45227]-T[45243]-[Info ]-Consumer           : OK, Val : 33.
2024-04-08 10:03:10-P[45227]-T[45229]-[Info ]-Producer           : OK, Val : 34.
2024-04-08 10:03:10-P[45227]-T[45243]-[Info ]-Consumer           : OK, Val : 34.
2024-04-08 10:03:10-P[45227]-T[45229]-[Info ]-Producer           : OK, Val : 35.
2024-04-08 10:03:10-P[45227]-T[45243]-[Info ]-Consumer           : OK, Val : 35.
2024-04-08 10:03:10-P[45227]-T[45229]-[Info ]-Producer           : OK, Val : 36.
2024-04-08 10:03:10-P[45227]-T[45243]-[Info ]-Consumer           : OK, Val : 36.
2024-04-08 10:03:10-P[45227]-T[45229]-[Info ]-Producer           : OK, Val : 37.
2024-04-08 10:03:10-P[45227]-T[45243]-[Info ]-Consumer           : OK, Val : 37.
2024-04-08 10:03:10-P[45227]-T[45229]-[Info ]-Producer           : OK, Val : 38.
2024-04-08 10:03:10-P[45227]-T[45243]-[Info ]-Consumer           : OK, Val : 38.
2024-04-08 10:03:10-P[45227]-T[45229]-[Info ]-Producer           : OK, Val : 39.
2024-04-08 10:03:10-P[45227]-T[45243]-[Info ]-Consumer           : OK, Val : 39.
2024-04-08 10:03:10-P[45227]-T[45233]-[Info ]-Producer           : OK, Val : 40.
2024-04-08 10:03:10-P[45227]-T[45241]-[Info ]-Consumer           : OK, Val : 40.
2024-04-08 10:03:10-P[45227]-T[45233]-[Info ]-Producer           : OK, Val : 41.
2024-04-08 10:03:10-P[45227]-T[45245]-[Info ]-Consumer           : OK, Val : 41.
2024-04-08 10:03:10-P[45227]-T[45233]-[Info ]-Producer           : OK, Val : 42.
2024-04-08 10:03:10-P[45227]-T[45245]-[Info ]-Consumer           : OK, Val : 42.
2024-04-08 10:03:10-P[45227]-T[45233]-[Info ]-Producer           : OK, Val : 43.
2024-04-08 10:03:10-P[45227]-T[45242]-[Info ]-Consumer           : OK, Val : 43.
2024-04-08 10:03:10-P[45227]-T[45233]-[Info ]-Producer           : OK, Val : 44.
2024-04-08 10:03:10-P[45227]-T[45242]-[Info ]-Consumer           : OK, Val : 44.
2024-04-08 10:03:10-P[45227]-T[45233]-[Info ]-Producer           : OK, Val : 45.
2024-04-08 10:03:10-P[45227]-T[45244]-[Info ]-Consumer           : OK, Val : 45.
2024-04-08 10:03:10-P[45227]-T[45233]-[Info ]-Producer           : OK, Val : 46.
2024-04-08 10:03:10-P[45227]-T[45245]-[Info ]-Consumer           : OK, Val : 46.
2024-04-08 10:03:10-P[45227]-T[45233]-[Info ]-Producer           : OK, Val : 47.
2024-04-08 10:03:10-P[45227]-T[45242]-[Info ]-Consumer           : OK, Val : 47.
2024-04-08 10:03:10-P[45227]-T[45233]-[Info ]-Producer           : OK, Val : 48.
2024-04-08 10:03:10-P[45227]-T[45242]-[Info ]-Consumer           : OK, Val : 48.
2024-04-08 10:03:10-P[45227]-T[45233]-[Info ]-Producer           : OK, Val : 49.
2024-04-08 10:03:10-P[45227]-T[45242]-[Info ]-Consumer           : OK, Val : 49.
2024-04-08 10:03:10-P[45227]-T[45233]-[Info ]-Producer           : OK, Val : 50.
2024-04-08 10:03:10-P[45227]-T[45242]-[Info ]-Consumer           : OK, Val : 50.
2024-04-08 10:03:10-P[45227]-T[45233]-[Info ]-Producer           : OK, Val : 51.
2024-04-08 10:03:10-P[45227]-T[45242]-[Info ]-Consumer           : OK, Val : 51.
2024-04-08 10:03:10-P[45227]-T[45233]-[Info ]-Producer           : OK, Val : 52.
2024-04-08 10:03:10-P[45227]-T[45242]-[Info ]-Consumer           : OK, Val : 52.
2024-04-08 10:03:10-P[45227]-T[45233]-[Info ]-Producer           : OK, Val : 53.
2024-04-08 10:03:10-P[45227]-T[45242]-[Info ]-Consumer           : OK, Val : 53.
2024-04-08 10:03:10-P[45227]-T[45233]-[Info ]-Producer           : OK, Val : 54.
2024-04-08 10:03:10-P[45227]-T[45245]-[Info ]-Consumer           : OK, Val : 54.
2024-04-08 10:03:10-P[45227]-T[45233]-[Info ]-Producer           : OK, Val : 55.
2024-04-08 10:03:10-P[45227]-T[45245]-[Info ]-Consumer           : OK, Val : 55.
2024-04-08 10:03:10-P[45227]-T[45233]-[Info ]-Producer           : OK, Val : 56.
2024-04-08 10:03:10-P[45227]-T[45244]-[Info ]-Consumer           : OK, Val : 56.
2024-04-08 10:03:10-P[45227]-T[45233]-[Info ]-Producer           : OK, Val : 57.
2024-04-08 10:03:10-P[45227]-T[45244]-[Info ]-Consumer           : OK, Val : 57.
2024-04-08 10:03:10-P[45227]-T[45233]-[Info ]-Producer           : OK, Val : 58.
2024-04-08 10:03:10-P[45227]-T[45244]-[Info ]-Consumer           : OK, Val : 58.
2024-04-08 10:03:10-P[45227]-T[45233]-[Info ]-Producer           : OK, Val : 59.
2024-04-08 10:03:10-P[45227]-T[45244]-[Info ]-Consumer           : OK, Val : 59.
2024-04-08 10:03:10-P[45227]-T[45235]-[Info ]-Producer           : OK, Val : 60.
2024-04-08 10:03:10-P[45227]-T[45241]-[Info ]-Consumer           : OK, Val : 60.
2024-04-08 10:03:10-P[45227]-T[45235]-[Info ]-Producer           : OK, Val : 61.
2024-04-08 10:03:10-P[45227]-T[45241]-[Info ]-Consumer           : OK, Val : 61.
2024-04-08 10:03:10-P[45227]-T[45235]-[Info ]-Producer           : OK, Val : 62.
2024-04-08 10:03:10-P[45227]-T[45241]-[Info ]-Consumer           : OK, Val : 62.
2024-04-08 10:03:10-P[45227]-T[45235]-[Info ]-Producer           : OK, Val : 63.
2024-04-08 10:03:10-P[45227]-T[45241]-[Info ]-Consumer           : OK, Val : 63.
2024-04-08 10:03:10-P[45227]-T[45235]-[Info ]-Producer           : OK, Val : 64.
2024-04-08 10:03:10-P[45227]-T[45241]-[Info ]-Consumer           : OK, Val : 64.
2024-04-08 10:03:10-P[45227]-T[45235]-[Info ]-Producer           : OK, Val : 65.
2024-04-08 10:03:10-P[45227]-T[45241]-[Info ]-Consumer           : OK, Val : 65.
2024-04-08 10:03:10-P[45227]-T[45235]-[Info ]-Producer           : OK, Val : 66.
2024-04-08 10:03:10-P[45227]-T[45241]-[Info ]-Consumer           : OK, Val : 66.
2024-04-08 10:03:10-P[45227]-T[45235]-[Info ]-Producer           : OK, Val : 67.
2024-04-08 10:03:10-P[45227]-T[45242]-[Info ]-Consumer           : OK, Val : 67.
2024-04-08 10:03:10-P[45227]-T[45235]-[Info ]-Producer           : OK, Val : 68.
2024-04-08 10:03:10-P[45227]-T[45242]-[Info ]-Consumer           : OK, Val : 68.
2024-04-08 10:03:10-P[45227]-T[45235]-[Info ]-Producer           : OK, Val : 69.
2024-04-08 10:03:10-P[45227]-T[45242]-[Info ]-Consumer           : OK, Val : 69.
2024-04-08 10:03:10-P[45227]-T[45235]-[Info ]-Producer           : OK, Val : 70.
2024-04-08 10:03:10-P[45227]-T[45242]-[Info ]-Consumer           : OK, Val : 70.
2024-04-08 10:03:10-P[45227]-T[45235]-[Info ]-Producer           : OK, Val : 71.
2024-04-08 10:03:10-P[45227]-T[45242]-[Info ]-Consumer           : OK, Val : 71.
2024-04-08 10:03:10-P[45227]-T[45235]-[Info ]-Producer           : OK, Val : 72.
2024-04-08 10:03:10-P[45227]-T[45242]-[Info ]-Consumer           : OK, Val : 72.
2024-04-08 10:03:10-P[45227]-T[45235]-[Info ]-Producer           : OK, Val : 73.
2024-04-08 10:03:10-P[45227]-T[45242]-[Info ]-Consumer           : OK, Val : 73.
2024-04-08 10:03:10-P[45227]-T[45235]-[Info ]-Producer           : OK, Val : 74.
2024-04-08 10:03:10-P[45227]-T[45242]-[Info ]-Consumer           : OK, Val : 74.
2024-04-08 10:03:10-P[45227]-T[45235]-[Info ]-Producer           : OK, Val : 75.
2024-04-08 10:03:10-P[45227]-T[45244]-[Info ]-Consumer           : OK, Val : 75.
2024-04-08 10:03:10-P[45227]-T[45235]-[Info ]-Producer           : OK, Val : 76.
2024-04-08 10:03:10-P[45227]-T[45244]-[Info ]-Consumer           : OK, Val : 76.
2024-04-08 10:03:10-P[45227]-T[45235]-[Info ]-Producer           : OK, Val : 77.
2024-04-08 10:03:10-P[45227]-T[45244]-[Info ]-Consumer           : OK, Val : 77.
2024-04-08 10:03:10-P[45227]-T[45235]-[Info ]-Producer           : OK, Val : 78.
2024-04-08 10:03:10-P[45227]-T[45244]-[Info ]-Consumer           : OK, Val : 78.
2024-04-08 10:03:10-P[45227]-T[45235]-[Info ]-Producer           : OK, Val : 79.
2024-04-08 10:03:10-P[45227]-T[45244]-[Info ]-Consumer           : OK, Val : 79.
2024-04-08 10:03:10-P[45227]-T[45232]-[Info ]-Producer           : OK, Val : 80.
2024-04-08 10:03:10-P[45227]-T[45244]-[Info ]-Consumer           : OK, Val : 80.
2024-04-08 10:03:10-P[45227]-T[45232]-[Info ]-Producer           : OK, Val : 81.
2024-04-08 10:03:10-P[45227]-T[45244]-[Info ]-Consumer           : OK, Val : 81.
2024-04-08 10:03:10-P[45227]-T[45232]-[Info ]-Producer           : OK, Val : 82.
2024-04-08 10:03:10-P[45227]-T[45244]-[Info ]-Consumer           : OK, Val : 82.
2024-04-08 10:03:10-P[45227]-T[45232]-[Info ]-Producer           : OK, Val : 83.
2024-04-08 10:03:10-P[45227]-T[45244]-[Info ]-Consumer           : OK, Val : 83.
2024-04-08 10:03:10-P[45227]-T[45232]-[Info ]-Producer           : OK, Val : 84.
2024-04-08 10:03:10-P[45227]-T[45244]-[Info ]-Consumer           : OK, Val : 84.
2024-04-08 10:03:10-P[45227]-T[45232]-[Info ]-Producer           : OK, Val : 85.
2024-04-08 10:03:10-P[45227]-T[45245]-[Info ]-Consumer           : OK, Val : 85.
2024-04-08 10:03:10-P[45227]-T[45232]-[Info ]-Producer           : OK, Val : 86.
2024-04-08 10:03:10-P[45227]-T[45244]-[Info ]-Consumer           : OK, Val : 86.
2024-04-08 10:03:10-P[45227]-T[45232]-[Info ]-Producer           : OK, Val : 87.
2024-04-08 10:03:10-P[45227]-T[45244]-[Info ]-Consumer           : OK, Val : 87.
2024-04-08 10:03:10-P[45227]-T[45232]-[Info ]-Producer           : OK, Val : 88.
2024-04-08 10:03:10-P[45227]-T[45245]-[Info ]-Consumer           : OK, Val : 88.
2024-04-08 10:03:10-P[45227]-T[45232]-[Info ]-Producer           : OK, Val : 89.
2024-04-08 10:03:10-P[45227]-T[45245]-[Info ]-Consumer           : OK, Val : 89.
2024-04-08 10:03:10-P[45227]-T[45232]-[Info ]-Producer           : OK, Val : 90.
2024-04-08 10:03:10-P[45227]-T[45245]-[Info ]-Consumer           : OK, Val : 90.
2024-04-08 10:03:10-P[45227]-T[45232]-[Info ]-Producer           : OK, Val : 91.
2024-04-08 10:03:10-P[45227]-T[45245]-[Info ]-Consumer           : OK, Val : 91.
2024-04-08 10:03:10-P[45227]-T[45232]-[Info ]-Producer           : OK, Val : 92.
2024-04-08 10:03:10-P[45227]-T[45245]-[Info ]-Consumer           : OK, Val : 92.
2024-04-08 10:03:10-P[45227]-T[45232]-[Info ]-Producer           : OK, Val : 93.
2024-04-08 10:03:10-P[45227]-T[45245]-[Info ]-Consumer           : OK, Val : 93.
2024-04-08 10:03:10-P[45227]-T[45232]-[Info ]-Producer           : OK, Val : 94.
2024-04-08 10:03:10-P[45227]-T[45245]-[Info ]-Consumer           : OK, Val : 94.
2024-04-08 10:03:10-P[45227]-T[45232]-[Info ]-Producer           : OK, Val : 95.
2024-04-08 10:03:10-P[45227]-T[45245]-[Info ]-Consumer           : OK, Val : 95.
2024-04-08 10:03:10-P[45227]-T[45232]-[Info ]-Producer           : OK, Val : 96.
2024-04-08 10:03:10-P[45227]-T[45245]-[Info ]-Consumer           : OK, Val : 96.
2024-04-08 10:03:10-P[45227]-T[45232]-[Info ]-Producer           : OK, Val : 97.
2024-04-08 10:03:10-P[45227]-T[45245]-[Info ]-Consumer           : OK, Val : 97.
2024-04-08 10:03:10-P[45227]-T[45232]-[Info ]-Producer           : OK, Val : 98.
2024-04-08 10:03:10-P[45227]-T[45245]-[Info ]-Consumer           : OK, Val : 98.
2024-04-08 10:03:10-P[45227]-T[45232]-[Info ]-Producer           : OK, Val : 99.
2024-04-08 10:03:10-P[45227]-T[45245]-[Info ]-Consumer           : OK, Val : 99.
2024-04-08 10:03:10-P[45227]-T[45237]-[Info ]-Producer           : OK, Val : 100.
2024-04-08 10:03:10-P[45227]-T[45244]-[Info ]-Consumer           : OK, Val : 100.
2024-04-08 10:03:10-P[45227]-T[45237]-[Info ]-Producer           : OK, Val : 101.
2024-04-08 10:03:10-P[45227]-T[45248]-[Info ]-Consumer           : OK, Val : 101.
2024-04-08 10:03:10-P[45227]-T[45237]-[Info ]-Producer           : OK, Val : 102.
2024-04-08 10:03:10-P[45227]-T[45248]-[Info ]-Consumer           : OK, Val : 102.
2024-04-08 10:03:10-P[45227]-T[45237]-[Info ]-Producer           : OK, Val : 103.
2024-04-08 10:03:10-P[45227]-T[45248]-[Info ]-Consumer           : OK, Val : 103.
2024-04-08 10:03:10-P[45227]-T[45237]-[Info ]-Producer           : OK, Val : 104.
2024-04-08 10:03:10-P[45227]-T[45248]-[Info ]-Consumer           : OK, Val : 104.
2024-04-08 10:03:10-P[45227]-T[45237]-[Info ]-Producer           : OK, Val : 105.
2024-04-08 10:03:10-P[45227]-T[45248]-[Info ]-Consumer           : OK, Val : 105.
2024-04-08 10:03:10-P[45227]-T[45237]-[Info ]-Producer           : OK, Val : 106.
2024-04-08 10:03:10-P[45227]-T[45248]-[Info ]-Consumer           : OK, Val : 106.
2024-04-08 10:03:10-P[45227]-T[45237]-[Info ]-Producer           : OK, Val : 107.
2024-04-08 10:03:10-P[45227]-T[45248]-[Info ]-Consumer           : OK, Val : 107.
2024-04-08 10:03:10-P[45227]-T[45237]-[Info ]-Producer           : OK, Val : 108.
2024-04-08 10:03:10-P[45227]-T[45248]-[Info ]-Consumer           : OK, Val : 108.
2024-04-08 10:03:10-P[45227]-T[45237]-[Info ]-Producer           : OK, Val : 109.
2024-04-08 10:03:10-P[45227]-T[45248]-[Info ]-Consumer           : OK, Val : 109.
2024-04-08 10:03:10-P[45227]-T[45237]-[Info ]-Producer           : OK, Val : 110.
2024-04-08 10:03:10-P[45227]-T[45246]-[Info ]-Consumer           : OK, Val : 110.
2024-04-08 10:03:10-P[45227]-T[45237]-[Info ]-Producer           : OK, Val : 111.
2024-04-08 10:03:10-P[45227]-T[45246]-[Info ]-Consumer           : OK, Val : 111.
2024-04-08 10:03:10-P[45227]-T[45237]-[Info ]-Producer           : OK, Val : 112.
2024-04-08 10:03:10-P[45227]-T[45246]-[Info ]-Consumer           : OK, Val : 112.
2024-04-08 10:03:10-P[45227]-T[45237]-[Info ]-Producer           : OK, Val : 113.
2024-04-08 10:03:10-P[45227]-T[45246]-[Info ]-Consumer           : OK, Val : 113.
2024-04-08 10:03:10-P[45227]-T[45237]-[Info ]-Producer           : OK, Val : 114.
2024-04-08 10:03:10-P[45227]-T[45246]-[Info ]-Consumer           : OK, Val : 114.
2024-04-08 10:03:10-P[45227]-T[45237]-[Info ]-Producer           : OK, Val : 115.
2024-04-08 10:03:10-P[45227]-T[45246]-[Info ]-Consumer           : OK, Val : 115.
2024-04-08 10:03:10-P[45227]-T[45237]-[Info ]-Producer           : OK, Val : 116.
2024-04-08 10:03:10-P[45227]-T[45246]-[Info ]-Consumer           : OK, Val : 116.
2024-04-08 10:03:10-P[45227]-T[45237]-[Info ]-Producer           : OK, Val : 117.
2024-04-08 10:03:10-P[45227]-T[45246]-[Info ]-Consumer           : OK, Val : 117.
2024-04-08 10:03:10-P[45227]-T[45237]-[Info ]-Producer           : OK, Val : 118.
2024-04-08 10:03:10-P[45227]-T[45246]-[Info ]-Consumer           : OK, Val : 118.
2024-04-08 10:03:10-P[45227]-T[45237]-[Info ]-Producer           : OK, Val : 119.
2024-04-08 10:03:10-P[45227]-T[45246]-[Info ]-Consumer           : OK, Val : 119.
2024-04-08 10:03:10-P[45227]-T[45238]-[Info ]-Producer           : OK, Val : 120.
2024-04-08 10:03:10-P[45227]-T[45244]-[Info ]-Consumer           : OK, Val : 120.
2024-04-08 10:03:10-P[45227]-T[45238]-[Info ]-Producer           : OK, Val : 121.
2024-04-08 10:03:10-P[45227]-T[45248]-[Info ]-Consumer           : OK, Val : 121.
2024-04-08 10:03:10-P[45227]-T[45238]-[Info ]-Producer           : OK, Val : 122.
2024-04-08 10:03:10-P[45227]-T[45248]-[Info ]-Consumer           : OK, Val : 122.
2024-04-08 10:03:10-P[45227]-T[45238]-[Info ]-Producer           : OK, Val : 123.
2024-04-08 10:03:10-P[45227]-T[45248]-[Info ]-Consumer           : OK, Val : 123.
2024-04-08 10:03:10-P[45227]-T[45238]-[Info ]-Producer           : OK, Val : 124.
2024-04-08 10:03:10-P[45227]-T[45248]-[Info ]-Consumer           : OK, Val : 124.
2024-04-08 10:03:10-P[45227]-T[45238]-[Info ]-Producer           : OK, Val : 125.
2024-04-08 10:03:10-P[45227]-T[45248]-[Info ]-Consumer           : OK, Val : 125.
2024-04-08 10:03:10-P[45227]-T[45238]-[Info ]-Producer           : OK, Val : 126.
2024-04-08 10:03:10-P[45227]-T[45248]-[Info ]-Consumer           : OK, Val : 126.
2024-04-08 10:03:10-P[45227]-T[45238]-[Info ]-Producer           : OK, Val : 127.
2024-04-08 10:03:10-P[45227]-T[45248]-[Info ]-Consumer           : OK, Val : 127.
2024-04-08 10:03:10-P[45227]-T[45238]-[Info ]-Producer           : OK, Val : 128.
2024-04-08 10:03:10-P[45227]-T[45248]-[Info ]-Consumer           : OK, Val : 128.
2024-04-08 10:03:10-P[45227]-T[45238]-[Info ]-Producer           : OK, Val : 129.
2024-04-08 10:03:10-P[45227]-T[45248]-[Info ]-Consumer           : OK, Val : 129.
2024-04-08 10:03:10-P[45227]-T[45238]-[Info ]-Producer           : OK, Val : 130.
2024-04-08 10:03:10-P[45227]-T[45248]-[Info ]-Consumer           : OK, Val : 130.
2024-04-08 10:03:10-P[45227]-T[45238]-[Info ]-Producer           : OK, Val : 131.
2024-04-08 10:03:10-P[45227]-T[45246]-[Info ]-Consumer           : OK, Val : 131.
2024-04-08 10:03:10-P[45227]-T[45238]-[Info ]-Producer           : OK, Val : 132.
2024-04-08 10:03:10-P[45227]-T[45246]-[Info ]-Consumer           : OK, Val : 132.
2024-04-08 10:03:10-P[45227]-T[45238]-[Info ]-Producer           : OK, Val : 133.
2024-04-08 10:03:10-P[45227]-T[45246]-[Info ]-Consumer           : OK, Val : 133.
2024-04-08 10:03:10-P[45227]-T[45238]-[Info ]-Producer           : OK, Val : 134.
2024-04-08 10:03:10-P[45227]-T[45246]-[Info ]-Consumer           : OK, Val : 134.
2024-04-08 10:03:10-P[45227]-T[45238]-[Info ]-Producer           : OK, Val : 135.
2024-04-08 10:03:10-P[45227]-T[45246]-[Info ]-Consumer           : OK, Val : 135.
2024-04-08 10:03:10-P[45227]-T[45238]-[Info ]-Producer           : OK, Val : 136.
2024-04-08 10:03:10-P[45227]-T[45246]-[Info ]-Consumer           : OK, Val : 136.
2024-04-08 10:03:10-P[45227]-T[45238]-[Info ]-Producer           : OK, Val : 137.
2024-04-08 10:03:10-P[45227]-T[45246]-[Info ]-Consumer           : OK, Val : 137.
2024-04-08 10:03:10-P[45227]-T[45238]-[Info ]-Producer           : OK, Val : 138.
2024-04-08 10:03:10-P[45227]-T[45246]-[Info ]-Consumer           : OK, Val : 138.
2024-04-08 10:03:10-P[45227]-T[45238]-[Info ]-Producer           : OK, Val : 139.
2024-04-08 10:03:10-P[45227]-T[45246]-[Info ]-Consumer           : OK, Val : 139.
2024-04-08 10:03:10-P[45227]-T[45234]-[Info ]-Producer           : OK, Val : 140.
2024-04-08 10:03:10-P[45227]-T[45242]-[Info ]-Consumer           : OK, Val : 140.
2024-04-08 10:03:10-P[45227]-T[45234]-[Info ]-Producer           : OK, Val : 141.
2024-04-08 10:03:10-P[45227]-T[45240]-[Info ]-Consumer           : OK, Val : 141.
2024-04-08 10:03:10-P[45227]-T[45234]-[Info ]-Producer           : OK, Val : 142.
2024-04-08 10:03:10-P[45227]-T[45240]-[Info ]-Consumer           : OK, Val : 142.
2024-04-08 10:03:10-P[45227]-T[45234]-[Info ]-Producer           : OK, Val : 143.
2024-04-08 10:03:10-P[45227]-T[45240]-[Info ]-Consumer           : OK, Val : 143.
2024-04-08 10:03:10-P[45227]-T[45234]-[Info ]-Producer           : OK, Val : 144.
2024-04-08 10:03:10-P[45227]-T[45240]-[Info ]-Consumer           : OK, Val : 144.
2024-04-08 10:03:10-P[45227]-T[45234]-[Info ]-Producer           : OK, Val : 145.
2024-04-08 10:03:10-P[45227]-T[45240]-[Info ]-Consumer           : OK, Val : 145.
2024-04-08 10:03:10-P[45227]-T[45234]-[Info ]-Producer           : OK, Val : 146.
2024-04-08 10:03:10-P[45227]-T[45240]-[Info ]-Consumer           : OK, Val : 146.
2024-04-08 10:03:10-P[45227]-T[45234]-[Info ]-Producer           : OK, Val : 147.
2024-04-08 10:03:10-P[45227]-T[45240]-[Info ]-Consumer           : OK, Val : 147.
2024-04-08 10:03:10-P[45227]-T[45234]-[Info ]-Producer           : OK, Val : 148.
2024-04-08 10:03:10-P[45227]-T[45240]-[Info ]-Consumer           : OK, Val : 148.
2024-04-08 10:03:10-P[45227]-T[45234]-[Info ]-Producer           : OK, Val : 149.
2024-04-08 10:03:10-P[45227]-T[45240]-[Info ]-Consumer           : OK, Val : 149.
2024-04-08 10:03:10-P[45227]-T[45234]-[Info ]-Producer           : OK, Val : 150.
2024-04-08 10:03:10-P[45227]-T[45240]-[Info ]-Consumer           : OK, Val : 150.
2024-04-08 10:03:10-P[45227]-T[45234]-[Info ]-Producer           : OK, Val : 151.
2024-04-08 10:03:10-P[45227]-T[45240]-[Info ]-Consumer           : OK, Val : 151.
2024-04-08 10:03:10-P[45227]-T[45234]-[Info ]-Producer           : OK, Val : 152.
2024-04-08 10:03:10-P[45227]-T[45240]-[Info ]-Consumer           : OK, Val : 152.
2024-04-08 10:03:10-P[45227]-T[45234]-[Info ]-Producer           : OK, Val : 153.
2024-04-08 10:03:10-P[45227]-T[45240]-[Info ]-Consumer           : OK, Val : 153.
2024-04-08 10:03:10-P[45227]-T[45234]-[Info ]-Producer           : OK, Val : 154.
2024-04-08 10:03:10-P[45227]-T[45240]-[Info ]-Consumer           : OK, Val : 154.
2024-04-08 10:03:10-P[45227]-T[45234]-[Info ]-Producer           : OK, Val : 155.
2024-04-08 10:03:10-P[45227]-T[45240]-[Info ]-Consumer           : OK, Val : 155.
2024-04-08 10:03:10-P[45227]-T[45234]-[Info ]-Producer           : OK, Val : 156.
2024-04-08 10:03:10-P[45227]-T[45240]-[Info ]-Consumer           : OK, Val : 156.
2024-04-08 10:03:10-P[45227]-T[45234]-[Info ]-Producer           : OK, Val : 157.
2024-04-08 10:03:10-P[45227]-T[45240]-[Info ]-Consumer           : OK, Val : 157.
2024-04-08 10:03:10-P[45227]-T[45234]-[Info ]-Producer           : OK, Val : 158.
2024-04-08 10:03:10-P[45227]-T[45240]-[Info ]-Consumer           : OK, Val : 158.
2024-04-08 10:03:10-P[45227]-T[45234]-[Info ]-Producer           : OK, Val : 159.
2024-04-08 10:03:10-P[45227]-T[45240]-[Info ]-Consumer           : OK, Val : 159.
2024-04-08 10:03:10-P[45227]-T[45236]-[Info ]-Producer           : OK, Val : 160.
2024-04-08 10:03:10-P[45227]-T[45242]-[Info ]-Consumer           : OK, Val : 160.
2024-04-08 10:03:10-P[45227]-T[45236]-[Info ]-Producer           : OK, Val : 161.
2024-04-08 10:03:10-P[45227]-T[45247]-[Info ]-Consumer           : OK, Val : 161.
2024-04-08 10:03:10-P[45227]-T[45236]-[Info ]-Producer           : OK, Val : 162.
2024-04-08 10:03:10-P[45227]-T[45247]-[Info ]-Consumer           : OK, Val : 162.
2024-04-08 10:03:10-P[45227]-T[45236]-[Info ]-Producer           : OK, Val : 163.
2024-04-08 10:03:10-P[45227]-T[45247]-[Info ]-Consumer           : OK, Val : 163.
2024-04-08 10:03:10-P[45227]-T[45236]-[Info ]-Producer           : OK, Val : 164.
2024-04-08 10:03:10-P[45227]-T[45247]-[Info ]-Consumer           : OK, Val : 164.
2024-04-08 10:03:10-P[45227]-T[45236]-[Info ]-Producer           : OK, Val : 165.
2024-04-08 10:03:10-P[45227]-T[45247]-[Info ]-Consumer           : OK, Val : 165.
2024-04-08 10:03:10-P[45227]-T[45236]-[Info ]-Producer           : OK, Val : 166.
2024-04-08 10:03:10-P[45227]-T[45247]-[Info ]-Consumer           : OK, Val : 166.
2024-04-08 10:03:10-P[45227]-T[45236]-[Info ]-Producer           : OK, Val : 167.
2024-04-08 10:03:10-P[45227]-T[45247]-[Info ]-Consumer           : OK, Val : 167.
2024-04-08 10:03:10-P[45227]-T[45236]-[Info ]-Producer           : OK, Val : 168.
2024-04-08 10:03:10-P[45227]-T[45247]-[Info ]-Consumer           : OK, Val : 168.
2024-04-08 10:03:10-P[45227]-T[45236]-[Info ]-Producer           : OK, Val : 169.
2024-04-08 10:03:10-P[45227]-T[45247]-[Info ]-Consumer           : OK, Val : 169.
2024-04-08 10:03:10-P[45227]-T[45236]-[Info ]-Producer           : OK, Val : 170.
2024-04-08 10:03:10-P[45227]-T[45247]-[Info ]-Consumer           : OK, Val : 170.
2024-04-08 10:03:10-P[45227]-T[45236]-[Info ]-Producer           : OK, Val : 171.
2024-04-08 10:03:10-P[45227]-T[45247]-[Info ]-Consumer           : OK, Val : 171.
2024-04-08 10:03:10-P[45227]-T[45236]-[Info ]-Producer           : OK, Val : 172.
2024-04-08 10:03:10-P[45227]-T[45247]-[Info ]-Consumer           : OK, Val : 172.
2024-04-08 10:03:10-P[45227]-T[45236]-[Info ]-Producer           : OK, Val : 173.
2024-04-08 10:03:10-P[45227]-T[45247]-[Info ]-Consumer           : OK, Val : 173.
2024-04-08 10:03:10-P[45227]-T[45236]-[Info ]-Producer           : OK, Val : 174.
2024-04-08 10:03:10-P[45227]-T[45247]-[Info ]-Consumer           : OK, Val : 174.
2024-04-08 10:03:10-P[45227]-T[45236]-[Info ]-Producer           : OK, Val : 175.
2024-04-08 10:03:10-P[45227]-T[45247]-[Info ]-Consumer           : OK, Val : 175.
2024-04-08 10:03:10-P[45227]-T[45236]-[Info ]-Producer           : OK, Val : 176.
2024-04-08 10:03:10-P[45227]-T[45247]-[Info ]-Consumer           : OK, Val : 176.
2024-04-08 10:03:10-P[45227]-T[45236]-[Info ]-Producer           : OK, Val : 177.
2024-04-08 10:03:10-P[45227]-T[45247]-[Info ]-Consumer           : OK, Val : 177.
2024-04-08 10:03:10-P[45227]-T[45236]-[Info ]-Producer           : OK, Val : 178.
2024-04-08 10:03:10-P[45227]-T[45247]-[Info ]-Consumer           : OK, Val : 178.
2024-04-08 10:03:10-P[45227]-T[45236]-[Info ]-Producer           : OK, Val : 179.
2024-04-08 10:03:10-P[45227]-T[45247]-[Info ]-Consumer           : OK, Val : 179.
2024-04-08 10:03:10-P[45227]-T[45230]-[Info ]-Producer           : OK, Val : 180.
2024-04-08 10:03:10-P[45227]-T[45245]-[Info ]-Consumer           : OK, Val : 180.
2024-04-08 10:03:10-P[45227]-T[45230]-[Info ]-Producer           : OK, Val : 181.
2024-04-08 10:03:10-P[45227]-T[45239]-[Info ]-Consumer           : OK, Val : 181.
2024-04-08 10:03:10-P[45227]-T[45230]-[Info ]-Producer           : OK, Val : 182.
2024-04-08 10:03:10-P[45227]-T[45239]-[Info ]-Consumer           : OK, Val : 182.
2024-04-08 10:03:10-P[45227]-T[45230]-[Info ]-Producer           : OK, Val : 183.
2024-04-08 10:03:10-P[45227]-T[45239]-[Info ]-Consumer           : OK, Val : 183.
2024-04-08 10:03:10-P[45227]-T[45230]-[Info ]-Producer           : OK, Val : 184.
2024-04-08 10:03:10-P[45227]-T[45239]-[Info ]-Consumer           : OK, Val : 184.
2024-04-08 10:03:10-P[45227]-T[45230]-[Info ]-Producer           : OK, Val : 185.
2024-04-08 10:03:10-P[45227]-T[45239]-[Info ]-Consumer           : OK, Val : 185.
2024-04-08 10:03:10-P[45227]-T[45230]-[Info ]-Producer           : OK, Val : 186.
2024-04-08 10:03:10-P[45227]-T[45239]-[Info ]-Consumer           : OK, Val : 186.
2024-04-08 10:03:10-P[45227]-T[45230]-[Info ]-Producer           : OK, Val : 187.
2024-04-08 10:03:10-P[45227]-T[45239]-[Info ]-Consumer           : OK, Val : 187.
2024-04-08 10:03:10-P[45227]-T[45230]-[Info ]-Producer           : OK, Val : 188.
2024-04-08 10:03:10-P[45227]-T[45239]-[Info ]-Consumer           : OK, Val : 188.
2024-04-08 10:03:10-P[45227]-T[45230]-[Info ]-Producer           : OK, Val : 189.
2024-04-08 10:03:10-P[45227]-T[45239]-[Info ]-Consumer           : OK, Val : 189.
2024-04-08 10:03:10-P[45227]-T[45230]-[Info ]-Producer           : OK, Val : 190.
2024-04-08 10:03:10-P[45227]-T[45239]-[Info ]-Consumer           : OK, Val : 190.
2024-04-08 10:03:10-P[45227]-T[45230]-[Info ]-Producer           : OK, Val : 191.
2024-04-08 10:03:10-P[45227]-T[45239]-[Info ]-Consumer           : OK, Val : 191.
2024-04-08 10:03:10-P[45227]-T[45230]-[Info ]-Producer           : OK, Val : 192.
2024-04-08 10:03:10-P[45227]-T[45239]-[Info ]-Consumer           : OK, Val : 192.
2024-04-08 10:03:10-P[45227]-T[45230]-[Info ]-Producer           : OK, Val : 193.
2024-04-08 10:03:10-P[45227]-T[45239]-[Info ]-Consumer           : OK, Val : 193.
2024-04-08 10:03:10-P[45227]-T[45230]-[Info ]-Producer           : OK, Val : 194.
2024-04-08 10:03:10-P[45227]-T[45239]-[Info ]-Consumer           : OK, Val : 194.
2024-04-08 10:03:10-P[45227]-T[45230]-[Info ]-Producer           : OK, Val : 195.
2024-04-08 10:03:10-P[45227]-T[45239]-[Info ]-Consumer           : OK, Val : 195.
2024-04-08 10:03:10-P[45227]-T[45230]-[Info ]-Producer           : OK, Val : 196.
2024-04-08 10:03:10-P[45227]-T[45239]-[Info ]-Consumer           : OK, Val : 196.
2024-04-08 10:03:10-P[45227]-T[45230]-[Info ]-Producer           : OK, Val : 197.
2024-04-08 10:03:10-P[45227]-T[45239]-[Info ]-Consumer           : OK, Val : 197.
2024-04-08 10:03:10-P[45227]-T[45230]-[Info ]-Producer           : OK, Val : 198.
2024-04-08 10:03:10-P[45227]-T[45239]-[Info ]-Consumer           : OK, Val : 198.
2024-04-08 10:03:10-P[45227]-T[45230]-[Info ]-Producer           : OK, Val : 199.
2024-04-08 10:03:10-P[45227]-T[45239]-[Info ]-Consumer           : OK, Val : 199.

 2、char[]类型

只是数字后面拼接了字符串。代码进行了些许调整。

(1)Demo

#include "SqQueue.h"#define TEST_CONSUMER_THREAD_NUM  10
#define TEST_PRODUCER_THREAD_NUM  10
#define TEST_INTERVAL_VAL         20
#define PRODUCER_SUM_VAL          (TEST_PRODUCER_THREAD_NUM * TEST_INTERVAL_VAL)
#define CONSUMER_VAL              (PRODUCER_SUM_VAL / TEST_CONSUMER_THREAD_NUM)
#define TEST_STR_DATA_SUFFIX      "I am a happy little angel. "
#define TEST_STR_DATA_PREFIX_LEN  100#define QUEUE_LEN                 8#define GLOBAL_ARRAY_COL_NUM      2
#define GLOBAL_ARRAY_ROW_NUM      TEST_PRODUCER_THREAD_NUMint GlobalArray[GLOBAL_ARRAY_ROW_NUM][GLOBAL_ARRAY_COL_NUM];typedef struct OneTaskSt
{SqQueue         *Queue;int             AccessIndex;OneThrdMutexSt  *Mutex;        
}OneTaskSt;void* Producer(void* Arg)
{int       i;int       Idx;OneTaskSt *Task       = (OneTaskSt *)Arg;int       TestDataLen = strlen(TEST_STR_DATA_SUFFIX);char      *TestData   = (char*)MyMalloc(sizeof(char) * (TestDataLen + TEST_STR_DATA_PREFIX_LEN));THRD_MUTEX_LOCK_F(Task->Mutex);Idx = Task->AccessIndex;Task->AccessIndex++;THRD_MUTEX_UNLOCK_F(Task->Mutex);for ( i = GlobalArray[Idx][0]; i < GlobalArray[Idx][1]; i++){sprintf(TestData,"%d %s",i,TEST_STR_DATA_SUFFIX);EnterSqQueue(Task->Queue, TestData);LogFormat(Info,"Producer           : OK, TestData : %s.\n",TestData);}free(TestData);TestData = NULL;THRD_EXIT(SUCCESS_FLAG);
}void* Consumer(void* Arg)
{int       Cnt         = 0;int       TestDataLen = strlen(TEST_STR_DATA_SUFFIX);OneTaskSt *Task       = (OneTaskSt *)Arg;char      *TestData   = (char*)MyMalloc(sizeof(char) * (TestDataLen + TEST_STR_DATA_PREFIX_LEN));while(Cnt != CONSUMER_VAL){if(LeaveSqQueue(Task->Queue, TestData) != SUCCESS_FLAG){continue;}LogFormat(Info,"Consumer           : OK, TestData : %s.\n",TestData);Cnt++;    }free(TestData);TestData = NULL;THRD_EXIT(SUCCESS_FLAG);
}Status main()
{int             i;void            *ThrdExitState     = NULL;OneTaskSt       Task;OneThrdSt       **ConsumerArray    = (OneThrdSt **)MyMalloc(sizeof(OneThrdSt *) * TEST_CONSUMER_THREAD_NUM);OneThrdSt       **ProducerArray    = (OneThrdSt **)MyMalloc(sizeof(OneThrdSt *) * TEST_PRODUCER_THREAD_NUM);InitAllSqQueue(&(Task.Queue), QUEUE_LEN, STRING_TYPE_FLAG, PTHREAD_PROCESS_PRIVATE, PTHREAD_MUTEX_ERRORCHECK, PTHREAD_MUTEX_STALLED, 2, 10000,CLOCK_REALTIME);OneThrdMutexCreate(&(Task.Mutex),PTHREAD_PROCESS_PRIVATE,PTHREAD_MUTEX_ERRORCHECK,PTHREAD_MUTEX_STALLED,2,1);Task.AccessIndex = 0;for ( i = 0; i < GLOBAL_ARRAY_ROW_NUM; i++){GlobalArray[i][0] = i * TEST_INTERVAL_VAL;GlobalArray[i][1] = GlobalArray[i][0] + TEST_INTERVAL_VAL;}for ( i = 0; i < TEST_PRODUCER_THREAD_NUM; i++){OneThrdCreate(&(ProducerArray[i]), PTHREAD_CREATE_JOINABLE,PTHREAD_STACK_MIN, ONE_PAGE_MEM_SIZE,Producer, &Task);}for ( i = 0; i < TEST_CONSUMER_THREAD_NUM; i++){OneThrdCreate(&(ConsumerArray[i]), PTHREAD_CREATE_JOINABLE,PTHREAD_STACK_MIN, ONE_PAGE_MEM_SIZE,Consumer, &Task);}for ( i = 0; i < TEST_PRODUCER_THREAD_NUM; i++){ThrdWait(ProducerArray[i]->ThreadId, &ThrdExitState);LogFormat(Debug,"ThrdExitState      : %ld.\n",(long)ThrdExitState);OneThrdFree(&(ProducerArray[i]));}for ( i = 0; i < TEST_CONSUMER_THREAD_NUM; i++){ThrdWait(ConsumerArray[i]->ThreadId, &ThrdExitState);LogFormat(Debug,"ThrdExitState      : %ld.\n",(long)ThrdExitState);OneThrdFree(&(ConsumerArray[i]));}free(ConsumerArray);ConsumerArray = NULL;free(ProducerArray);ProducerArray = NULL;PrintfSqQueue(Task.Queue, Debug);DestroySqQueue(&(Task.Queue));OneThrdMutexFree(&(Task.Mutex));return SUCCESS_FLAG;
}

(2)编译

[gbase@czg2 SqQueue]$ make clean
rm -rf TestSqQueue
rm -rf TestThreadQ
[gbase@czg2 SqQueue]$ make
gcc -Wall -Wextra -O3 -std=gnu11  TestThreadQ.c -o TestThreadQ -I /opt/Developer/ComputerLanguageStudy/C/DataStructureTestSrc/PublicFunction/ -I /opt/Developer/ComputerLanguageStudy/C/DataStructureTestSrc/Log/ -I /opt/Developer/ComputerLanguageStudy/C/DataStructureTestSrc/PublicFunction/Pthread/ -L /opt/Developer/ComputerLanguageStudy/C/DataStructureTestSrc/PublicFunction/Make/Libs/ -L /usr/lib64/ -l PublicFunction -l Log -l MyThread -l SqQueue
gcc -Wall -Wextra -O3 -std=gnu11  main.c -o TestSqQueue -I /opt/Developer/ComputerLanguageStudy/C/DataStructureTestSrc/PublicFunction/ -I /opt/Developer/ComputerLanguageStudy/C/DataStructureTestSrc/Log/ -I /opt/Developer/ComputerLanguageStudy/C/DataStructureTestSrc/PublicFunction/Pthread/ -L /opt/Developer/ComputerLanguageStudy/C/DataStructureTestSrc/PublicFunction/Make/Libs/ -L /usr/lib64/ -l PublicFunction -l Log -l MyThread -l SqQueue

(3)验证

消费者和生产者分别拿到了0-199,没有重复消费、多消费、少消费的情况发生,说明我们实现的正确。

[gbase@czg2 SqQueue]$ ./TestThreadQ |sort -t ":" -k 5 -n
2024-04-08 14:47:46-P[53664]-T[53668]-[Info ]-Producer           : OK, TestData : 0 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53677]-[Info ]-Consumer           : OK, TestData : 0 I am a happy little angel. .
Producer           : OK, TestData : 70 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53668]-[Info ]-Producer           : OK, TestData : 1 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53684]-[Info ]-Consumer           : OK, TestData : 1 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53668]-[Info ]-Producer           : OK, TestData : 2 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53676]-[Info ]-Consumer           : OK, TestData : 2 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53668]-[Info ]-Producer           : OK, TestData : 3 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53676]-[Info ]-Consumer           : OK, TestData : 3 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53668]-[Info ]-Producer           : OK, TestData : 4 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53683]-[Info ]-Consumer           : OK, TestData : 4 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53668]-[Info ]-Producer           : OK, TestData : 5 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53683]-[Info ]-Consumer           : OK, TestData : 5 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53668]-[Info ]-Producer           : OK, TestData : 6 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53681]-[Info ]-Consumer           : OK, TestData : 6 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53668]-[Info ]-Producer           : OK, TestData : 7 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53680]-[Info ]-Consumer           : OK, TestData : 7 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53668]-[Info ]-Producer           : OK, TestData : 8 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53681]-[Info ]-Consumer           : OK, TestData : 8 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53668]-[Info ]-Producer           : OK, TestData : 9 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53681]-[Info ]-Consumer           : OK, TestData : 9 I am a happy little angel. .
2024-04-08 06:47:46-P[53664]-T[53680]-[Info ]-Consumer           : OK, TestData : 10 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53668]-[Info ]-Producer           : OK, TestData : 10 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53668]-[Info ]-Producer           : OK, TestData : 11 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53681]-[Info ]-Consumer           : OK, TestData : 11 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53668]-[Info ]-Producer           : OK, TestData : 12 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53678]-[Info ]-Consumer           : OK, TestData : 12 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53668]-[Info ]-Producer           : OK, TestData : 13 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53677]-[Info ]-Consumer           : OK, TestData : 13 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53668]-[Info ]-Producer           : OK, TestData : 14 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53678]-[Info ]-Consumer           : OK, TestData : 14 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53668]-[Info ]-Producer           : OK, TestData : 15 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53680]-[Info ]-Consumer           : OK, TestData : 15 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53668]-[Info ]-Producer           : OK, TestData : 16 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53680]-[Info ]-Consumer           : OK, TestData : 16 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53668]-[Info ]-Producer           : OK, TestData : 17 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53677]-[Info ]-Consumer           : OK, TestData : 17 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53668]-[Info ]-Producer           : OK, TestData : 18 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53677]-[Info ]-Consumer           : OK, TestData : 18 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53668]-[Info ]-Producer           : OK, TestData : 19 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53670]-[Info ]-Producer           : OK, TestData : 20 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53683]-[Info ]-Consumer           : OK, TestData : 20 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53670]-[Info ]-Producer           : OK, TestData : 21 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53676]-[Info ]-Consumer           : OK, TestData : 21 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53670]-[Info ]-Producer           : OK, TestData : 22 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53676]-[Info ]-Consumer           : OK, TestData : 22 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53670]-[Info ]-Producer           : OK, TestData : 23 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53676]-[Info ]-Consumer           : OK, TestData : 23 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53670]-[Info ]-Producer           : OK, TestData : 24 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53676]-[Info ]-Consumer           : OK, TestData : 24 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53670]-[Info ]-Producer           : OK, TestData : 25 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53676]-[Info ]-Consumer           : OK, TestData : 25 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53670]-[Info ]-Producer           : OK, TestData : 26 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53676]-[Info ]-Consumer           : OK, TestData : 26 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53670]-[Info ]-Producer           : OK, TestData : 27 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53676]-[Info ]-Consumer           : OK, TestData : 27 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53670]-[Info ]-Producer           : OK, TestData : 28 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53676]-[Info ]-Consumer           : OK, TestData : 28 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53670]-[Info ]-Producer           : OK, TestData : 29 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53676]-[Info ]-Consumer           : OK, TestData : 29 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53670]-[Info ]-Producer           : OK, TestData : 30 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53682]-[Info ]-Consumer           : OK, TestData : 30 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53670]-[Info ]-Producer           : OK, TestData : 31 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53677]-[Info ]-Consumer           : OK, TestData : 31 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53670]-[Info ]-Producer           : OK, TestData : 32 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53680]-[Info ]-Consumer           : OK, TestData : 32 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53670]-[Info ]-Producer           : OK, TestData : 33 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53677]-[Info ]-Consumer           : OK, TestData : 33 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53670]-[Info ]-Producer           : OK, TestData : 34 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53676]-[Info ]-Consumer           : OK, TestData : 34 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53670]-[Info ]-Producer           : OK, TestData : 35 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53676]-[Info ]-Consumer           : OK, TestData : 35 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53670]-[Info ]-Producer           : OK, TestData : 36 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53680]-[Info ]-Consumer           : OK, TestData : 36 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53670]-[Info ]-Producer           : OK, TestData : 37 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53680]-[Info ]-Consumer           : OK, TestData : 37 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53670]-[Info ]-Producer           : OK, TestData : 38 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53680]-[Info ]-Consumer           : OK, TestData : 38 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53670]-[Info ]-Producer           : OK, TestData : 39 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53681]-[Info ]-Consumer           : OK, TestData : 39 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53674]-[Info ]-Producer           : OK, TestData : 40 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53676]-[Info ]-Consumer           : OK, TestData : 40 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53674]-[Info ]-Producer           : OK, TestData : 41 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53676]-[Info ]-Consumer           : OK, TestData : 41 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53674]-[Info ]-Producer           : OK, TestData : 42 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53679]-[Info ]-Consumer           : OK, TestData : 42 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53674]-[Info ]-Producer           : OK, TestData : 43 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53679]-[Info ]-Consumer           : OK, TestData : 43 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53674]-[Info ]-Producer           : OK, TestData : 44 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53679]-[Info ]-Consumer           : OK, TestData : 44 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53674]-[Info ]-Producer           : OK, TestData : 45 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53679]-[Info ]-Consumer           : OK, TestData : 45 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53674]-[Info ]-Producer           : OK, TestData : 46 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53679]-[Info ]-2024-04-08 14:47:46-P[53664]-T[53672]-[Info ]-Consumer           : OK, TestData : 19 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53679]-[Info ]-Consumer           : OK, TestData : 46 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53674]-[Info ]-Producer           : OK, TestData : 47 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53678]-[Info ]-Consumer           : OK, TestData : 47 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53674]-[Info ]-Producer           : OK, TestData : 48 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53679]-[Info ]-Consumer           : OK, TestData : 48 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53674]-[Info ]-Producer           : OK, TestData : 49 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53679]-[Info ]-Consumer           : OK, TestData : 49 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53674]-[Info ]-Producer           : OK, TestData : 50 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53681]-[Info ]-Consumer           : OK, TestData : 50 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53674]-[Info ]-Producer           : OK, TestData : 51 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53677]-[Info ]-Consumer           : OK, TestData : 51 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53674]-[Info ]-Producer           : OK, TestData : 52 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53684]-[Info ]-Consumer           : OK, TestData : 52 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53674]-[Info ]-Producer           : OK, TestData : 53 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53684]-[Info ]-Consumer           : OK, TestData : 53 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53674]-[Info ]-Producer           : OK, TestData : 54 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53684]-[Info ]-Consumer           : OK, TestData : 54 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53674]-[Info ]-Producer           : OK, TestData : 55 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53685]-[Info ]-Consumer           : OK, TestData : 55 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53674]-[Info ]-Producer           : OK, TestData : 56 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53685]-[Info ]-Consumer           : OK, TestData : 56 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53674]-[Info ]-Producer           : OK, TestData : 57 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53685]-[Info ]-Consumer           : OK, TestData : 57 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53674]-[Info ]-Producer           : OK, TestData : 58 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53685]-[Info ]-Consumer           : OK, TestData : 58 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53674]-[Info ]-Producer           : OK, TestData : 59 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53685]-[Info ]-Consumer           : OK, TestData : 59 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53672]-[Info ]-Producer           : OK, TestData : 60 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53678]-[Info ]-Consumer           : OK, TestData : 60 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53672]-[Info ]-Producer           : OK, TestData : 61 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53681]-[Info ]-Consumer           : OK, TestData : 61 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53672]-[Info ]-Producer           : OK, TestData : 62 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53679]-[Info ]-Consumer           : OK, TestData : 62 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53672]-[Info ]-Producer           : OK, TestData : 63 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53679]-[Info ]-Consumer           : OK, TestData : 63 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53672]-[Info ]-Producer           : OK, TestData : 64 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53679]-[Info ]-Consumer           : OK, TestData : 64 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53672]-[Info ]-Producer           : OK, TestData : 65 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53684]-[Info ]-Consumer           : OK, TestData : 65 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53672]-[Info ]-Producer           : OK, TestData : 66 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53684]-[Info ]-Consumer           : OK, TestData : 66 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53672]-[Info ]-Producer           : OK, TestData : 67 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53679]-[Info ]-Consumer           : OK, TestData : 67 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53672]-[Info ]-Producer           : OK, TestData : 68 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53679]-[Info ]-Consumer           : OK, TestData : 68 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53672]-[Info ]-Producer           : OK, TestData : 69 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53681]-[Info ]-Consumer           : OK, TestData : 69 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53677]-[Info ]-Consumer           : OK, TestData : 70 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53672]-[Info ]-Producer           : OK, TestData : 71 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53677]-[Info ]-Consumer           : OK, TestData : 71 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53672]-[Info ]-Producer           : OK, TestData : 72 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53684]-[Info ]-Consumer           : OK, TestData : 72 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53672]-[Info ]-Producer           : OK, TestData : 73 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53684]-[Info ]-Consumer           : OK, TestData : 73 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53672]-[Info ]-Producer           : OK, TestData : 74 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53682]-[Info ]-Consumer           : OK, TestData : 74 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53672]-[Info ]-Producer           : OK, TestData : 75 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53682]-[Info ]-Consumer           : OK, TestData : 75 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53672]-[Info ]-Producer           : OK, TestData : 76 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53682]-[Info ]-Consumer           : OK, TestData : 76 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53672]-[Info ]-Producer           : OK, TestData : 77 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53684]-[Info ]-Consumer           : OK, TestData : 77 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53672]-[Info ]-Producer           : OK, TestData : 78 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53684]-[Info ]-Consumer           : OK, TestData : 78 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53672]-[Info ]-Producer           : OK, TestData : 79 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53684]-[Info ]-Consumer           : OK, TestData : 79 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53671]-[Info ]-Producer           : OK, TestData : 80 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53679]-[Info ]-Consumer           : OK, TestData : 80 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53671]-[Info ]-Producer           : OK, TestData : 81 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53683]-[Info ]-Consumer           : OK, TestData : 81 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53671]-[Info ]-Producer           : OK, TestData : 82 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53683]-[Info ]-Consumer           : OK, TestData : 82 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53671]-[Info ]-Producer           : OK, TestData : 83 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53685]-[Info ]-Consumer           : OK, TestData : 83 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53671]-[Info ]-Producer           : OK, TestData : 84 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53678]-[Info ]-Consumer           : OK, TestData : 84 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53671]-[Info ]-Producer           : OK, TestData : 85 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53678]-[Info ]-Consumer           : OK, TestData : 85 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53671]-[Info ]-Producer           : OK, TestData : 86 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53678]-[Info ]-Consumer           : OK, TestData : 86 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53671]-[Info ]-Producer           : OK, TestData : 87 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53678]-[Info ]-Consumer           : OK, TestData : 87 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53671]-[Info ]-Producer           : OK, TestData : 88 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53678]-[Info ]-Consumer           : OK, TestData : 88 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53671]-[Info ]-Producer           : OK, TestData : 89 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53678]-[Info ]-Consumer           : OK, TestData : 89 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53671]-[Info ]-Producer           : OK, TestData : 90 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53678]-[Info ]-Consumer           : OK, TestData : 90 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53671]-[Info ]-Producer           : OK, TestData : 91 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53677]-[Info ]-Consumer           : OK, TestData : 91 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53671]-[Info ]-Producer           : OK, TestData : 92 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53677]-[Info ]-Consumer           : OK, TestData : 92 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53671]-[Info ]-Producer           : OK, TestData : 93 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53683]-[Info ]-Consumer           : OK, TestData : 93 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53671]-[Info ]-Producer           : OK, TestData : 94 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53676]-[Info ]-Consumer           : OK, TestData : 94 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53671]-[Info ]-Producer           : OK, TestData : 95 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53682]-[Info ]-Consumer           : OK, TestData : 95 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53671]-[Info ]-Producer           : OK, TestData : 96 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53682]-[Info ]-Consumer           : OK, TestData : 96 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53671]-[Info ]-Producer           : OK, TestData : 97 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53685]-[Info ]-Consumer           : OK, TestData : 97 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53671]-[Info ]-Producer           : OK, TestData : 98 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53682]-[Info ]-Consumer           : OK, TestData : 98 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53671]-[Info ]-Producer           : OK, TestData : 99 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53685]-[Info ]-Consumer           : OK, TestData : 99 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53666]-[Info ]-Producer           : OK, TestData : 100 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53684]-[Info ]-Consumer           : OK, TestData : 100 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53666]-[Info ]-Producer           : OK, TestData : 101 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53683]-[Info ]-Consumer           : OK, TestData : 101 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53666]-[Info ]-Producer           : OK, TestData : 102 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53685]-[Info ]-Consumer           : OK, TestData : 102 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53666]-[Info ]-Producer           : OK, TestData : 103 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53682]-[Info ]-Consumer           : OK, TestData : 103 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53666]-[Info ]-Producer           : OK, TestData : 104 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53681]-[Info ]-Consumer           : OK, TestData : 104 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53666]-[Info ]-Producer           : OK, TestData : 105 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53683]-[Info ]-Consumer           : OK, TestData : 105 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53666]-[Info ]-Producer           : OK, TestData : 106 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53683]-[Info ]-Consumer           : OK, TestData : 106 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53666]-[Info ]-Producer           : OK, TestData : 107 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53679]-[Info ]-Consumer           : OK, TestData : 107 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53666]-[Info ]-Producer           : OK, TestData : 108 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53680]-[Info ]-Consumer           : OK, TestData : 108 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53666]-[Info ]-Producer           : OK, TestData : 109 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53683]-[Info ]-Consumer           : OK, TestData : 109 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53666]-[Info ]-Producer           : OK, TestData : 110 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53677]-[Info ]-Consumer           : OK, TestData : 110 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53666]-[Info ]-Producer           : OK, TestData : 111 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53677]-[Info ]-Consumer           : OK, TestData : 111 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53666]-[Info ]-Producer           : OK, TestData : 112 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53677]-[Info ]-Consumer           : OK, TestData : 112 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53666]-[Info ]-Producer           : OK, TestData : 113 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53681]-[Info ]-Consumer           : OK, TestData : 113 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53666]-[Info ]-Producer           : OK, TestData : 114 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53680]-[Info ]-Consumer           : OK, TestData : 114 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53666]-[Info ]-Producer           : OK, TestData : 115 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53676]-[Info ]-Consumer           : OK, TestData : 115 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53666]-[Info ]-Producer           : OK, TestData : 116 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53681]-[Info ]-Consumer           : OK, TestData : 116 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53666]-[Info ]-Producer           : OK, TestData : 117 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53681]-[Info ]-Consumer           : OK, TestData : 117 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53666]-[Info ]-Producer           : OK, TestData : 118 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53685]-[Info ]-Consumer           : OK, TestData : 118 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53666]-[Info ]-Producer           : OK, TestData : 119 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53684]-[Info ]-Consumer           : OK, TestData : 119 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53673]-[Info ]-Producer           : OK, TestData : 120 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53681]-[Info ]-Consumer           : OK, TestData : 120 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53673]-[Info ]-Producer           : OK, TestData : 121 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53677]-[Info ]-Consumer           : OK, TestData : 121 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53673]-[Info ]-Producer           : OK, TestData : 122 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53678]-[Info ]-Consumer           : OK, TestData : 122 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53673]-[Info ]-Producer           : OK, TestData : 123 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53682]-[Info ]-Consumer           : OK, TestData : 123 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53673]-[Info ]-Producer           : OK, TestData : 124 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53680]-[Info ]-Consumer           : OK, TestData : 124 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53673]-[Info ]-Producer           : OK, TestData : 125 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53680]-[Info ]-Consumer           : OK, TestData : 125 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53673]-[Info ]-Producer           : OK, TestData : 126 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53676]-[Info ]-Consumer           : OK, TestData : 126 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53673]-[Info ]-Producer           : OK, TestData : 127 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53685]-[Info ]-Consumer           : OK, TestData : 127 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53673]-[Info ]-Producer           : OK, TestData : 128 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53682]-[Info ]-Consumer           : OK, TestData : 128 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53673]-[Info ]-Producer           : OK, TestData : 129 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53685]-[Info ]-Consumer           : OK, TestData : 129 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53673]-[Info ]-Producer           : OK, TestData : 130 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53685]-[Info ]-Consumer           : OK, TestData : 130 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53673]-[Info ]-Producer           : OK, TestData : 131 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53685]-[Info ]-Consumer           : OK, TestData : 131 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53673]-[Info ]-Producer           : OK, TestData : 132 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53685]-[Info ]-Consumer           : OK, TestData : 132 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53673]-[Info ]-Producer           : OK, TestData : 133 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53685]-[Info ]-Consumer           : OK, TestData : 133 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53673]-[Info ]-Producer           : OK, TestData : 134 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53682]-[Info ]-Consumer           : OK, TestData : 134 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53673]-[Info ]-Producer           : OK, TestData : 135 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53684]-[Info ]-Consumer           : OK, TestData : 135 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53673]-[Info ]-Producer           : OK, TestData : 136 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53682]-[Info ]-Consumer           : OK, TestData : 136 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53673]-[Info ]-Producer           : OK, TestData : 137 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53684]-[Info ]-Consumer           : OK, TestData : 137 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53673]-[Info ]-Producer           : OK, TestData : 138 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53685]-[Info ]-Consumer           : OK, TestData : 138 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53673]-[Info ]-Producer           : OK, TestData : 139 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53685]-[Info ]-Consumer           : OK, TestData : 139 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53675]-[Info ]-Producer           : OK, TestData : 140 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53680]-[Info ]-Consumer           : OK, TestData : 140 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53675]-[Info ]-Producer           : OK, TestData : 141 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53684]-[Info ]-Consumer           : OK, TestData : 141 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53675]-[Info ]-Producer           : OK, TestData : 142 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53679]-[Info ]-Consumer           : OK, TestData : 142 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53675]-[Info ]-Producer           : OK, TestData : 143 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53679]-[Info ]-Consumer           : OK, TestData : 143 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53675]-[Info ]-Producer           : OK, TestData : 144 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53676]-[Info ]-Consumer           : OK, TestData : 144 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53675]-[Info ]-Producer           : OK, TestData : 145 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53681]-[Info ]-Consumer           : OK, TestData : 145 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53675]-[Info ]-Producer           : OK, TestData : 146 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53680]-[Info ]-Consumer           : OK, TestData : 146 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53675]-[Info ]-Producer           : OK, TestData : 147 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53676]-[Info ]-Consumer           : OK, TestData : 147 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53675]-[Info ]-Producer           : OK, TestData : 148 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53682]-[Info ]-Consumer           : OK, TestData : 148 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53675]-[Info ]-Producer           : OK, TestData : 149 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53681]-[Info ]-Consumer           : OK, TestData : 149 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53675]-[Info ]-Producer           : OK, TestData : 150 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53681]-[Info ]-Consumer           : OK, TestData : 150 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53675]-[Info ]-Producer           : OK, TestData : 151 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53681]-[Info ]-Consumer           : OK, TestData : 151 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53675]-[Info ]-Producer           : OK, TestData : 152 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53680]-[Info ]-Consumer           : OK, TestData : 152 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53675]-[Info ]-Producer           : OK, TestData : 153 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53677]-[Info ]-Consumer           : OK, TestData : 153 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53675]-[Info ]-Producer           : OK, TestData : 154 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53677]-[Info ]-Consumer           : OK, TestData : 154 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53675]-[Info ]-Producer           : OK, TestData : 155 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53677]-[Info ]-Consumer           : OK, TestData : 155 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53675]-[Info ]-Producer           : OK, TestData : 156 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53680]-[Info ]-Consumer           : OK, TestData : 156 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53675]-[Info ]-Producer           : OK, TestData : 157 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53680]-[Info ]-Consumer           : OK, TestData : 157 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53675]-[Info ]-Producer           : OK, TestData : 158 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53684]-[Info ]-Consumer           : OK, TestData : 158 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53675]-[Info ]-Producer           : OK, TestData : 159 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53682]-[Info ]-Consumer           : OK, TestData : 159 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53667]-[Info ]-Producer           : OK, TestData : 160 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53682]-[Info ]-Consumer           : OK, TestData : 160 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53667]-[Info ]-Producer           : OK, TestData : 161 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53678]-[Info ]-Consumer           : OK, TestData : 161 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53667]-[Info ]-Producer           : OK, TestData : 162 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53683]-[Info ]-Consumer           : OK, TestData : 162 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53667]-[Info ]-Producer           : OK, TestData : 163 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53683]-[Info ]-Consumer           : OK, TestData : 163 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53667]-[Info ]-Producer           : OK, TestData : 164 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53677]-[Info ]-Consumer           : OK, TestData : 164 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53667]-[Info ]-Producer           : OK, TestData : 165 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53681]-[Info ]-Consumer           : OK, TestData : 165 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53667]-[Info ]-Producer           : OK, TestData : 166 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53678]-[Info ]-Consumer           : OK, TestData : 166 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53667]-[Info ]-Producer           : OK, TestData : 167 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53678]-[Info ]-Consumer           : OK, TestData : 167 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53667]-[Info ]-Producer           : OK, TestData : 168 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53678]-[Info ]-Consumer           : OK, TestData : 168 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53667]-[Info ]-Producer           : OK, TestData : 169 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53683]-[Info ]-Consumer           : OK, TestData : 169 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53667]-[Info ]-Producer           : OK, TestData : 170 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53683]-[Info ]-Consumer           : OK, TestData : 170 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53667]-[Info ]-Producer           : OK, TestData : 171 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53683]-[Info ]-Consumer           : OK, TestData : 171 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53667]-[Info ]-Producer           : OK, TestData : 172 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53683]-[Info ]-Consumer           : OK, TestData : 172 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53667]-[Info ]-Producer           : OK, TestData : 173 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53683]-[Info ]-Consumer           : OK, TestData : 173 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53667]-[Info ]-Producer           : OK, TestData : 174 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53683]-[Info ]-Consumer           : OK, TestData : 174 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53667]-[Info ]-Producer           : OK, TestData : 175 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53680]-[Info ]-Consumer           : OK, TestData : 175 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53667]-[Info ]-Producer           : OK, TestData : 176 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53684]-[Info ]-Consumer           : OK, TestData : 176 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53667]-[Info ]-Producer           : OK, TestData : 177 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53684]-[Info ]-Consumer           : OK, TestData : 177 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53667]-[Info ]-Producer           : OK, TestData : 178 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53684]-[Info ]-Consumer           : OK, TestData : 178 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53667]-[Info ]-Producer           : OK, TestData : 179 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53685]-[Info ]-Consumer           : OK, TestData : 179 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53669]-[Info ]-Producer           : OK, TestData : 180 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53685]-[Info ]-Consumer           : OK, TestData : 180 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53669]-[Info ]-Producer           : OK, TestData : 181 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53677]-[Info ]-Consumer           : OK, TestData : 181 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53669]-[Info ]-Producer           : OK, TestData : 182 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53682]-[Info ]-Consumer           : OK, TestData : 182 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53669]-[Info ]-Producer           : OK, TestData : 183 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53678]-[Info ]-Consumer           : OK, TestData : 183 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53669]-[Info ]-Producer           : OK, TestData : 184 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53678]-[Info ]-Consumer           : OK, TestData : 184 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53669]-[Info ]-Producer           : OK, TestData : 185 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53678]-[Info ]-Consumer           : OK, TestData : 185 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53669]-[Info ]-Producer           : OK, TestData : 186 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53678]-[Info ]-Consumer           : OK, TestData : 186 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53669]-[Info ]-Producer           : OK, TestData : 187 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53680]-[Info ]-Consumer           : OK, TestData : 187 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53669]-[Info ]-Producer           : OK, TestData : 188 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53679]-[Info ]-Consumer           : OK, TestData : 188 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53669]-[Info ]-Producer           : OK, TestData : 189 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53679]-[Info ]-Consumer           : OK, TestData : 189 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53669]-[Info ]-Producer           : OK, TestData : 190 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53679]-[Info ]-Consumer           : OK, TestData : 190 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53669]-[Info ]-Producer           : OK, TestData : 191 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53681]-[Info ]-Consumer           : OK, TestData : 191 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53669]-[Info ]-Producer           : OK, TestData : 192 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53681]-[Info ]-Consumer           : OK, TestData : 192 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53669]-[Info ]-Producer           : OK, TestData : 193 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53680]-[Info ]-Consumer           : OK, TestData : 193 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53669]-[Info ]-Producer           : OK, TestData : 194 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53683]-[Info ]-Consumer           : OK, TestData : 194 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53669]-[Info ]-Producer           : OK, TestData : 195 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53682]-[Info ]-Consumer           : OK, TestData : 195 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53669]-[Info ]-Producer           : OK, TestData : 196 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53682]-[Info ]-Consumer           : OK, TestData : 196 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53669]-[Info ]-Producer           : OK, TestData : 197 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53683]-[Info ]-Consumer           : OK, TestData : 197 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53669]-[Info ]-Producer           : OK, TestData : 198 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53682]-[Info ]-Consumer           : OK, TestData : 198 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53669]-[Info ]-Producer           : OK, TestData : 199 I am a happy little angel. .
2024-04-08 14:47:46-P[53664]-T[53682]-[Info ]-Consumer           : OK, TestData : 199 I am a happy little angel. .

五、线程池测试验证

就上面队列的基础上加上线程的管理,最主要的区别是上面的队列实现为拷贝数据,也就是说生产者需要把数据拷贝到队列,消费者需要把数据从队列中拷贝到自己的线程中。有两次数据的拷贝,而线程池中是拷贝指针而不是拷贝数据,在一些场景中线程池的效率会高于队列。上面这个测试结果我取的是最好的结果。

那有人就会问了现在这个场景为什么看不出效果呢,我总结原因有以下几点:

1、int类型占用4个字节,指针类型占用8个字节,任务的消费和生产在线程池中就消耗较大。

2、线程池的实现在队列的基础上加了屏障和读写锁,这些也会消耗一部分性能。

后面我们会验证一下字符类型,来证明我们的猜想。

1、int类型

(1)示意图

(2)Demo

#include "ThreadPool.h"#define TEST_CONSUMER_THREAD_NUM  10
#define TEST_PRODUCER_THREAD_NUM  10
#define TEST_INTERVAL_VAL         20
#define PRODUCER_SUM_VAL          (TEST_PRODUCER_THREAD_NUM * TEST_INTERVAL_VAL)
#define CONSUMER_VAL              (PRODUCER_SUM_VAL / TEST_CONSUMER_THREAD_NUM)#define QUEUE_LEN                 8#define GLOBAL_ARRAY_COL_NUM      2
#define GLOBAL_ARRAY_ROW_NUM      TEST_PRODUCER_THREAD_NUMint GlobalArray[GLOBAL_ARRAY_ROW_NUM][GLOBAL_ARRAY_COL_NUM];typedef struct ToatalSt
{ThrdPool        *Pool;int             AccessIndex;OneThrdMutexSt  *Mutex;       
}ToatalSt;Status PrintNums(void* Arg)
{LogFormat(Info,"PrintNums          : %d.\n",*((int *)Arg));return SUCCESS_FLAG;
}void* Producer(void* Arg)
{int       i;int       j               = 0;int       Idx;ToatalSt  *Total          = (ToatalSt *)Arg;TaskGrpSt **TaskGrpArry   = (TaskGrpSt **)MyMalloc(sizeof(TaskGrpSt *) * INIT_TASK_GRP_NUMS);TaskSt    *TaskArray      = (TaskSt*)MyMalloc(sizeof(TaskSt) * INIT_TASK_GRP_NUMS);THRD_MUTEX_LOCK_F(Total->Mutex);Idx = Total->AccessIndex;Total->AccessIndex++;THRD_MUTEX_UNLOCK_F(Total->Mutex);for (i = 0; i < INIT_TASK_GRP_NUMS; i++){//初始化失败的话,会内存泄露,后面改进。if(TaskGrpInit(&(TaskGrpArry[i]), 1, TASK_RETRY_TIMES) != SUCCESS_FLAG){goto ERR_STAGE;}TaskArray[i].Func  = PrintNums;TaskArray[i].Arg   = (int*)MyMalloc(sizeof(int));TaskArray[i].State = TASK_INIT_STATE;TaskGrpAddTask(TaskGrpArry[i], &(TaskArray[i]));}for ( i = GlobalArray[Idx][0]; i < GlobalArray[Idx][1]; i++){
SCAN_REC_STAGE:for (; j < INIT_TASK_GRP_NUMS; j++)//避免每次从头扫描数组,提升效率。{THRD_RW_LOCK_READ_LOCK_F(TaskGrpArry[j]->StateRwLock);if (TaskGrpArry[j]->State == TASK_GRP_END_STATE || TaskGrpArry[j]->State == TASK_GRP_INIT_STATE)//有任务结束或任务空间未使用。{THRD_RW_LOCK_UNLOCK_F(TaskGrpArry[j]->StateRwLock);break;}THRD_RW_LOCK_UNLOCK_F(TaskGrpArry[j]->StateRwLock);}if (j >= INIT_TASK_GRP_NUMS)//说明没有可用空间{j = 0;goto SCAN_REC_STAGE;//继续扫描数据查看是否有空间腾出。}//从数据库中抽取x万条数据。*((int*)(TaskArray[j].Arg)) = i;//将任务组压入线程池中。ThrdPoolAddTaskGrp(Total->Pool, TaskGrpArry[j]);LogFormat(Info,"Producer           : %d.\n",*((int*)(TaskArray[j].Arg)));j++;//防止重复扫描数据。if (j >= INIT_TASK_GRP_NUMS){j = 0;}}//由于数据是存储在生产者线程中的,所以可能出现任务下发完了,但消费者还没有完成任务。//需要等所有任务完成。THRD_BARRIER_WAIT_F(Total->Pool->ProducerBarrier);THRD_BARRIER_WAIT_F(Total->Pool->AllBarrier);//释放资源for (i = 0; i < INIT_TASK_GRP_NUMS; i++){if(TaskGrpDstry(&(TaskGrpArry[i])) != SUCCESS_FLAG){goto ERR_STAGE;}free(TaskArray[i].Arg);TaskArray[i].Arg   = NULL;TaskArray[i].Func  = NULL;TaskArray[i].State = TASK_INIT_STATE;}free(TaskGrpArry);free(TaskArray);TaskGrpArry = NULL;TaskArray   = NULL;THRD_EXIT(SUCCESS_FLAG);
ERR_STAGE:THRD_EXIT(FAIL_FLAG);
}Status main()
{int             i;ToatalSt        Total;OneThrdMutexCreate(&(Total.Mutex),PTHREAD_PROCESS_PRIVATE,PTHREAD_MUTEX_ERRORCHECK,PTHREAD_MUTEX_STALLED,2,1);Total.AccessIndex = 0;for ( i = 0; i < GLOBAL_ARRAY_ROW_NUM; i++){GlobalArray[i][0] = i * TEST_INTERVAL_VAL;GlobalArray[i][1] = GlobalArray[i][0] + TEST_INTERVAL_VAL;}ThrdPoolInit(&(Total.Pool), TEST_CONSUMER_THREAD_NUM, TEST_PRODUCER_THREAD_NUM, QUEUE_LEN,Producer, &Total);ThrdPoolDstry(&(Total.Pool));OneThrdMutexFree(&(Total.Mutex));return SUCCESS_FLAG;
}

(3)编译

[gbase@czg2 MyPool]$ make clean
rm -rf TestThreadPool
[gbase@czg2 MyPool]$ make
gcc -Wall -Wextra -O3 -std=gnu11  TestThreadPool.c -o TestThreadPool -I /opt/Developer/ComputerLanguageStudy/C/DataStructureTestSrc/PublicFunction/ -I /opt/Developer/ComputerLanguageStudy/C/DataStructureTestSrc/Log/ -I /opt/Developer/ComputerLanguageStudy/C/DataStructureTestSrc/PublicFunction/Pthread/ -I /opt/Developer/ComputerLanguageStudy/C/DataStructureTestSrc/PublicFunction/SqQueue/ -L /opt/Developer/ComputerLanguageStudy/C/DataStructureTestSrc/PublicFunction/Make/Libs/ -L /usr/lib64/ -l PublicFunction -l Log -l MyThread -l SqQueue -l MyPool

(4)验证

消费者和生产者分别拿到了0-199,没有重复消费、多消费、少消费的情况发生,说明我们实现的正确。

[gbase@czg2 MyPool]$ ./TestThreadPool |sort -t ":" -k 4 -n
2024-04-08 10:38:13-P[48233]-T[48237]-[Info ]-Producer           : 0.
2024-04-08 10:38:13-P[48233]-T[48245]-[Warn ]-ThrdCondTimedWait  : Normal, Time Out.
2024-04-08 10:38:13-P[48233]-T[48247]-[Warn ]-ThrdCondTimedWait  : Normal, Time Out.
2024-04-08 10:38:13-P[48233]-T[48248]-[Warn ]-ThrdCondTimedWait  : Normal, Time Out.
2024-04-08 10:38:13-P[48233]-T[48249]-[Warn ]-ThrdCondTimedWait  : Normal, Time Out.
2024-04-08 10:38:13-P[48233]-T[48250]-[Info ]-PrintNums          : 0.
2024-04-08 10:38:13-P[48233]-T[48250]-[Warn ]-ThrdCondTimedWait  : Normal, Time Out.
2024-04-08 10:38:13-P[48233]-T[48251]-[Warn ]-ThrdCondTimedWait  : Normal, Time Out.
2024-04-08 10:38:13-P[48233]-T[48252]-[Warn ]-ThrdCondTimedWait  : Normal, Time Out.
2024-04-08 10:38:13-P[48233]-T[48253]-[Warn ]-ThrdCondTimedWait  : Normal, Time Out.
2024-04-08 10:38:13-P[48233]-T[48254]-[Warn ]-ThrdCondTimedWait  : Normal, Time Out.
PrintNums          : 155.
PrintNums          : 30.
2024-04-08 10:38:13-P[48233]-T[48237]-[Info ]-Producer           : 1.
2024-04-08 10:38:13-P[48233]-T[48250]-[Info ]-PrintNums          : 1.
2024-04-08 10:38:13-P[48233]-T[48237]-[Info ]-Producer           : 2.
2024-04-08 10:38:13-P[48233]-T[48250]-[Info ]-PrintNums          : 2.
2024-04-08 10:38:13-P[48233]-T[48237]-[Info ]-Producer           : 3.
2024-04-08 10:38:13-P[48233]-T[48250]-[Info ]-PrintNums          : 3.
2024-04-08 10:38:13-P[48233]-T[48237]-[Info ]-Producer           : 4.
2024-04-08 10:38:13-P[48233]-T[48250]-[Info ]-PrintNums          : 4.
2024-04-08 10:38:13-P[48233]-T[48237]-[Info ]-Producer           : 5.
2024-04-08 10:38:13-P[48233]-T[48250]-[Info ]-PrintNums          : 5.
2024-04-08 10:38:13-P[48233]-T[48237]-[Info ]-Producer           : 6.
2024-04-08 10:38:13-P[48233]-T[48250]-[Info ]-PrintNums          : 6.
2024-04-08 10:38:13-P[48233]-T[48237]-[Info ]-Producer           : 7.
2024-04-08 10:38:13-P[48233]-T[48250]-[Info ]-PrintNums          : 7.
2024-04-08 10:38:13-P[48233]-T[48237]-[Info ]-Producer           : 8.
2024-04-08 10:38:13-P[48233]-T[48245]-[Info ]-PrintNums          : 8.
2024-04-08 10:38:13-P[48233]-T[48237]-[Info ]-Producer           : 9.
2024-04-08 10:38:13-P[48233]-T[48251]-[Info ]-PrintNums          : 9.
2024-04-08 10:38:13-P[48233]-T[48237]-[Info ]-Producer           : 10.
2024-04-08 10:38:13-P[48233]-T[48251]-[Info ]-PrintNums          : 10.
2024-04-08 10:38:13-P[48233]-T[48237]-[Info ]-Producer           : 11.
2024-04-08 10:38:13-P[48233]-T[48251]-[Info ]-PrintNums          : 11.
2024-04-08 10:38:13-P[48233]-T[48237]-[Info ]-Producer           : 12.
2024-04-08 10:38:13-P[48233]-T[48253]-[Info ]-PrintNums          : 12.
2024-04-08 10:38:13-P[48233]-T[48237]-[Info ]-Producer           : 13.
2024-04-08 10:38:13-P[48233]-T[48250]-[Info ]-PrintNums          : 13.
2024-04-08 10:38:13-P[48233]-T[48237]-[Info ]-Producer           : 14.
2024-04-08 10:38:13-P[48233]-T[48250]-[Info ]-PrintNums          : 14.
2024-04-08 10:38:13-P[48233]-T[48237]-[Info ]-Producer           : 15.
2024-04-08 10:38:13-P[48233]-T[48250]-[Info ]-PrintNums          : 15.
2024-04-08 10:38:13-P[48233]-T[48237]-[Info ]-Producer           : 16.
2024-04-08 10:38:13-P[48233]-T[48250]-[Info ]-PrintNums          : 16.
2024-04-08 10:38:13-P[48233]-T[48237]-[Info ]-Producer           : 17.
2024-04-08 10:38:13-P[48233]-T[48250]-[Info ]-PrintNums          : 17.
2024-04-08 10:38:13-P[48233]-T[48237]-[Info ]-Producer           : 18.
2024-04-08 10:38:13-P[48233]-T[48250]-[Info ]-PrintNums          : 18.
2024-04-08 10:38:13-P[48233]-T[48237]-[Info ]-Producer           : 19.
2024-04-08 10:38:13-P[48233]-T[48250]-[Info ]-PrintNums          : 19.
2024-04-08 10:38:13-P[48233]-T[48239]-[Info ]-Producer           : 20.
2024-04-08 10:38:13-P[48233]-T[48252]-[Info ]-PrintNums          : 20.
2024-04-08 10:38:13-P[48233]-T[48239]-[Info ]-Producer           : 21.
2024-04-08 10:38:13-P[48233]-T[48252]-[Info ]-PrintNums          : 21.
2024-04-08 10:38:13-P[48233]-T[48239]-[Info ]-Producer           : 22.
2024-04-08 10:38:13-P[48233]-T[48252]-[Info ]-PrintNums          : 22.
2024-04-08 10:38:13-P[48233]-T[48239]-[Info ]-Producer           : 23.
2024-04-08 10:38:13-P[48233]-T[48252]-[Info ]-PrintNums          : 23.
2024-04-08 10:38:13-P[48233]-T[48239]-[Info ]-Producer           : 24.
2024-04-08 10:38:13-P[48233]-T[48252]-[Info ]-PrintNums          : 24.
2024-04-08 10:38:13-P[48233]-T[48239]-[Info ]-Producer           : 25.
2024-04-08 10:38:13-P[48233]-T[48252]-[Info ]-PrintNums          : 25.
2024-04-08 10:38:13-P[48233]-T[48239]-[Info ]-Producer           : 26.
2024-04-08 10:38:13-P[48233]-T[48252]-[Info ]-PrintNums          : 26.
2024-04-08 10:38:13-P[48233]-T[48239]-[Info ]-Producer           : 27.
2024-04-08 10:38:13-P[48233]-T[48252]-[Info ]-PrintNums          : 27.
2024-04-08 10:38:13-P[48233]-T[48239]-[Info ]-Producer           : 28.
2024-04-08 10:38:13-P[48233]-T[48251]-[Info ]-PrintNums          : 28.
2024-04-08 10:38:13-P[48233]-T[48239]-[Info ]-Producer           : 29.
2024-04-08 10:38:13-P[48233]-T[48253]-[Info ]-PrintNums          : 29.
2024-04-08 10:38:13-P[48233]-T[48239]-[Info ]-Producer           : 30.
2024-04-08 10:38:13-P[48233]-T[48239]-[Info ]-Producer           : 31.
2024-04-08 10:38:13-P[48233]-T[48247]-[Info ]-PrintNums          : 31.
2024-04-08 10:38:13-P[48233]-T[48239]-[Info ]-Producer           : 32.
2024-04-08 10:38:13-P[48233]-T[48245]-[Info ]-PrintNums          : 32.
2024-04-08 10:38:13-P[48233]-T[48245]-[Info ]-PrintNums          : 33.
2024-04-08 10:38:13-P[48233]-T[48239]-[Info ]-Producer           : 34.
2024-04-08 10:38:13-P[48233]-T[48245]-[Info ]-PrintNums          : 34.
2024-04-08 10:38:13-P[48233]-T[48239]-[Info ]-Producer           : 35.
2024-04-08 10:38:13-P[48233]-T[48245]-[Info ]-PrintNums          : 35.
2024-04-08 10:38:13-P[48233]-T[48239]-[Info ]-Producer           : 36.
2024-04-08 10:38:13-P[48233]-T[48245]-[Info ]-PrintNums          : 36.
2024-04-08 10:38:13-P[48233]-T[48239]-[Info ]-Producer           : 37.
2024-04-08 10:38:13-P[48233]-T[48245]-[Info ]-PrintNums          : 37.
2024-04-08 10:38:13-P[48233]-T[48239]-[Info ]-2024-04-08 10:38:13-P[48233]-T[48247]-[Info ]-Producer           : 33.
2024-04-08 10:38:13-P[48233]-T[48239]-[Info ]-Producer           : 38.
2024-04-08 10:38:13-P[48233]-T[48245]-[Info ]-PrintNums          : 38.
2024-04-08 10:38:13-P[48233]-T[48251]-[Info ]-2024-04-08 10:38:13-P[48233]-T[48247]-[Info ]-PrintNums          : 112.
2024-04-08 10:38:13-P[48233]-T[48239]-[Info ]-Producer           : 39.
2024-04-08 10:38:13-P[48233]-T[48253]-[Info ]-PrintNums          : 39.
2024-04-08 10:38:13-P[48233]-T[48241]-[Info ]-Producer           : 40.
2024-04-08 10:38:13-P[48233]-T[48250]-[Info ]-PrintNums          : 40.
2024-04-08 10:38:13-P[48233]-T[48241]-[Info ]-Producer           : 41.
2024-04-08 10:38:13-P[48233]-T[48250]-[Info ]-PrintNums          : 41.
2024-04-08 10:38:13-P[48233]-T[48241]-[Info ]-Producer           : 42.
2024-04-08 10:38:13-P[48233]-T[48248]-[Info ]-PrintNums          : 42.
2024-04-08 10:38:13-P[48233]-T[48241]-[Info ]-Producer           : 43.
2024-04-08 10:38:13-P[48233]-T[48248]-[Info ]-PrintNums          : 43.
2024-04-08 10:38:13-P[48233]-T[48241]-[Info ]-Producer           : 44.
2024-04-08 10:38:13-P[48233]-T[48248]-[Info ]-PrintNums          : 44.
2024-04-08 10:38:13-P[48233]-T[48241]-[Info ]-Producer           : 45.
2024-04-08 10:38:13-P[48233]-T[48248]-[Info ]-PrintNums          : 45.
2024-04-08 10:38:13-P[48233]-T[48241]-[Info ]-Producer           : 46.
2024-04-08 10:38:13-P[48233]-T[48249]-[Info ]-PrintNums          : 46.
2024-04-08 10:38:13-P[48233]-T[48241]-[Info ]-Producer           : 47.
2024-04-08 10:38:13-P[48233]-T[48246]-[Info ]-PrintNums          : 47.
2024-04-08 10:38:13-P[48233]-T[48241]-[Info ]-Producer           : 48.
2024-04-08 10:38:13-P[48233]-T[48252]-[Info ]-PrintNums          : 48.
2024-04-08 10:38:13-P[48233]-T[48241]-[Info ]-Producer           : 49.
2024-04-08 10:38:13-P[48233]-T[48247]-[Info ]-PrintNums          : 49.
2024-04-08 10:38:13-P[48233]-T[48241]-[Info ]-Producer           : 50.
2024-04-08 10:38:13-P[48233]-T[48247]-[Info ]-PrintNums          : 50.
2024-04-08 10:38:13-P[48233]-T[48241]-[Info ]-Producer           : 51.
2024-04-08 10:38:13-P[48233]-T[48252]-[Info ]-PrintNums          : 51.
2024-04-08 10:38:13-P[48233]-T[48241]-[Info ]-Producer           : 52.
2024-04-08 10:38:13-P[48233]-T[48248]-[Info ]-PrintNums          : 52.
2024-04-08 10:38:13-P[48233]-T[48241]-[Info ]-Producer           : 53.
2024-04-08 10:38:13-P[48233]-T[48249]-[Info ]-PrintNums          : 53.
2024-04-08 10:38:13-P[48233]-T[48241]-[Info ]-Producer           : 54.
2024-04-08 10:38:13-P[48233]-T[48251]-[Info ]-PrintNums          : 54.
2024-04-08 10:38:13-P[48233]-T[48241]-[Info ]-Producer           : 55.
2024-04-08 10:38:13-P[48233]-T[48245]-[Info ]-PrintNums          : 55.
2024-04-08 10:38:13-P[48233]-T[48241]-[Info ]-Producer           : 56.
2024-04-08 10:38:13-P[48233]-T[48251]-[Info ]-PrintNums          : 56.
2024-04-08 10:38:13-P[48233]-T[48241]-[Info ]-Producer           : 57.
2024-04-08 10:38:13-P[48233]-T[48254]-[Info ]-PrintNums          : 57.
2024-04-08 10:38:13-P[48233]-T[48241]-[Info ]-Producer           : 58.
2024-04-08 10:38:13-P[48233]-T[48251]-[Info ]-PrintNums          : 58.
2024-04-08 10:38:13-P[48233]-T[48241]-[Info ]-Producer           : 59.
2024-04-08 10:38:13-P[48233]-T[48254]-[Info ]-PrintNums          : 59.
2024-04-08 10:38:13-P[48233]-T[48243]-[Info ]-Producer           : 60.
2024-04-08 10:38:13-P[48233]-T[48245]-[Info ]-PrintNums          : 60.
2024-04-08 10:38:13-P[48233]-T[48243]-[Info ]-Producer           : 61.
2024-04-08 10:38:13-P[48233]-T[48245]-[Info ]-PrintNums          : 61.
2024-04-08 10:38:13-P[48233]-T[48243]-[Info ]-Producer           : 62.
2024-04-08 10:38:13-P[48233]-T[48245]-[Info ]-PrintNums          : 62.
2024-04-08 10:38:13-P[48233]-T[48243]-[Info ]-Producer           : 63.
2024-04-08 10:38:13-P[48233]-T[48245]-[Info ]-PrintNums          : 63.
2024-04-08 10:38:13-P[48233]-T[48243]-[Info ]-Producer           : 64.
2024-04-08 10:38:13-P[48233]-T[48245]-[Info ]-PrintNums          : 64.
2024-04-08 10:38:13-P[48233]-T[48243]-[Info ]-Producer           : 65.
2024-04-08 10:38:13-P[48233]-T[48245]-[Info ]-PrintNums          : 65.
2024-04-08 10:38:13-P[48233]-T[48243]-[Info ]-Producer           : 66.
2024-04-08 10:38:13-P[48233]-T[48245]-[Info ]-PrintNums          : 66.
2024-04-08 10:38:13-P[48233]-T[48243]-[Info ]-Producer           : 67.
2024-04-08 10:38:13-P[48233]-T[48245]-[Info ]-PrintNums          : 67.
2024-04-08 10:38:13-P[48233]-T[48243]-[Info ]-Producer           : 68.
2024-04-08 10:38:13-P[48233]-T[48248]-[Info ]-PrintNums          : 68.
2024-04-08 10:38:13-P[48233]-T[48243]-[Info ]-Producer           : 69.
2024-04-08 10:38:13-P[48233]-T[48248]-[Info ]-PrintNums          : 69.
2024-04-08 10:38:13-P[48233]-T[48243]-[Info ]-Producer           : 70.
2024-04-08 10:38:13-P[48233]-T[48248]-[Info ]-PrintNums          : 70.
2024-04-08 10:38:13-P[48233]-T[48243]-[Info ]-Producer           : 71.
2024-04-08 10:38:13-P[48233]-T[48248]-[Info ]-PrintNums          : 71.
2024-04-08 10:38:13-P[48233]-T[48243]-[Info ]-Producer           : 72.
2024-04-08 10:38:13-P[48233]-T[48248]-[Info ]-PrintNums          : 72.
2024-04-08 10:38:13-P[48233]-T[48243]-[Info ]-Producer           : 73.
2024-04-08 10:38:13-P[48233]-T[48248]-[Info ]-PrintNums          : 73.
2024-04-08 10:38:13-P[48233]-T[48243]-[Info ]-Producer           : 74.
2024-04-08 10:38:13-P[48233]-T[48248]-[Info ]-PrintNums          : 74.
2024-04-08 10:38:13-P[48233]-T[48243]-[Info ]-Producer           : 75.
2024-04-08 10:38:13-P[48233]-T[48248]-[Info ]-PrintNums          : 75.
2024-04-08 10:38:13-P[48233]-T[48243]-[Info ]-Producer           : 76.
2024-04-08 10:38:13-P[48233]-T[48251]-[Info ]-PrintNums          : 76.
2024-04-08 10:38:13-P[48233]-T[48243]-[Info ]-Producer           : 77.
2024-04-08 10:38:13-P[48233]-T[48251]-[Info ]-PrintNums          : 77.
2024-04-08 10:38:13-P[48233]-T[48243]-[Info ]-Producer           : 78.
2024-04-08 10:38:13-P[48233]-T[48252]-[Info ]-PrintNums          : 78.
2024-04-08 10:38:13-P[48233]-T[48243]-[Info ]-Producer           : 79.
2024-04-08 10:38:13-P[48233]-T[48249]-[Info ]-PrintNums          : 79.
2024-04-08 10:38:13-P[48233]-T[48235]-[Info ]-Producer           : 80.
2024-04-08 10:38:13-P[48233]-T[48247]-[Info ]-PrintNums          : 80.
2024-04-08 10:38:13-P[48233]-T[48235]-[Info ]-Producer           : 81.
2024-04-08 10:38:13-P[48233]-T[48247]-[Info ]-PrintNums          : 81.
2024-04-08 10:38:13-P[48233]-T[48235]-[Info ]-Producer           : 82.
2024-04-08 10:38:13-P[48233]-T[48253]-[Info ]-PrintNums          : 82.
2024-04-08 10:38:13-P[48233]-T[48235]-[Info ]-Producer           : 83.
2024-04-08 10:38:13-P[48233]-T[48253]-[Info ]-PrintNums          : 83.
2024-04-08 10:38:13-P[48233]-T[48235]-[Info ]-Producer           : 84.
2024-04-08 10:38:13-P[48233]-T[48252]-[Info ]-PrintNums          : 84.
2024-04-08 10:38:13-P[48233]-T[48235]-[Info ]-Producer           : 85.
2024-04-08 10:38:13-P[48233]-T[48245]-[Info ]-PrintNums          : 85.
2024-04-08 10:38:13-P[48233]-T[48235]-[Info ]-Producer           : 86.
2024-04-08 10:38:13-P[48233]-T[48246]-[Info ]-PrintNums          : 86.
2024-04-08 10:38:13-P[48233]-T[48235]-[Info ]-Producer           : 87.
2024-04-08 10:38:13-P[48233]-T[48247]-[Info ]-PrintNums          : 87.
2024-04-08 10:38:13-P[48233]-T[48235]-[Info ]-Producer           : 88.
2024-04-08 10:38:13-P[48233]-T[48254]-[Info ]-PrintNums          : 88.
2024-04-08 10:38:13-P[48233]-T[48235]-[Info ]-Producer           : 89.
2024-04-08 10:38:13-P[48233]-T[48250]-[Info ]-PrintNums          : 89.
2024-04-08 10:38:13-P[48233]-T[48235]-[Info ]-Producer           : 90.
2024-04-08 10:38:13-P[48233]-T[48254]-[Info ]-PrintNums          : 90.
2024-04-08 10:38:13-P[48233]-T[48235]-[Info ]-Producer           : 91.
2024-04-08 10:38:13-P[48233]-T[48254]-[Info ]-PrintNums          : 91.
2024-04-08 10:38:13-P[48233]-T[48235]-[Info ]-Producer           : 92.
2024-04-08 10:38:13-P[48233]-T[48254]-[Info ]-PrintNums          : 92.
2024-04-08 10:38:13-P[48233]-T[48235]-[Info ]-Producer           : 93.
2024-04-08 10:38:13-P[48233]-T[48250]-[Info ]-PrintNums          : 93.
2024-04-08 10:38:13-P[48233]-T[48235]-[Info ]-Producer           : 94.
2024-04-08 10:38:13-P[48233]-T[48254]-[Info ]-PrintNums          : 94.
2024-04-08 10:38:13-P[48233]-T[48235]-[Info ]-Producer           : 95.
2024-04-08 10:38:13-P[48233]-T[48251]-[Info ]-PrintNums          : 95.
2024-04-08 10:38:13-P[48233]-T[48235]-[Info ]-Producer           : 96.
2024-04-08 10:38:13-P[48233]-T[48247]-[Info ]-PrintNums          : 96.
2024-04-08 10:38:13-P[48233]-T[48235]-[Info ]-Producer           : 97.
2024-04-08 10:38:13-P[48233]-T[48246]-[Info ]-PrintNums          : 97.
2024-04-08 10:38:13-P[48233]-T[48235]-[Info ]-Producer           : 98.
2024-04-08 10:38:13-P[48233]-T[48250]-[Info ]-PrintNums          : 98.
2024-04-08 10:38:13-P[48233]-T[48235]-[Info ]-Producer           : 99.
2024-04-08 10:38:13-P[48233]-T[48251]-[Info ]-PrintNums          : 99.
2024-04-08 10:38:13-P[48233]-T[48244]-[Info ]-Producer           : 100.
2024-04-08 10:38:13-P[48233]-T[48246]-[Info ]-PrintNums          : 100.
2024-04-08 10:38:13-P[48233]-T[48244]-[Info ]-Producer           : 101.
2024-04-08 10:38:13-P[48233]-T[48246]-[Info ]-PrintNums          : 101.
2024-04-08 10:38:13-P[48233]-T[48244]-[Info ]-Producer           : 102.
2024-04-08 10:38:13-P[48233]-T[48246]-[Info ]-PrintNums          : 102.
2024-04-08 10:38:13-P[48233]-T[48244]-[Info ]-Producer           : 103.
2024-04-08 10:38:13-P[48233]-T[48246]-[Info ]-PrintNums          : 103.
2024-04-08 10:38:13-P[48233]-T[48244]-[Info ]-Producer           : 104.
2024-04-08 10:38:13-P[48233]-T[48246]-[Info ]-PrintNums          : 104.
2024-04-08 10:38:13-P[48233]-T[48244]-[Info ]-Producer           : 105.
2024-04-08 10:38:13-P[48233]-T[48246]-[Info ]-PrintNums          : 105.
2024-04-08 10:38:13-P[48233]-T[48244]-[Info ]-Producer           : 106.
2024-04-08 10:38:13-P[48233]-T[48246]-[Info ]-PrintNums          : 106.
2024-04-08 10:38:13-P[48233]-T[48244]-[Info ]-Producer           : 107.
2024-04-08 10:38:13-P[48233]-T[48246]-[Info ]-PrintNums          : 107.
2024-04-08 10:38:13-P[48233]-T[48244]-[Info ]-Producer           : 108.
2024-04-08 10:38:13-P[48233]-T[48248]-[Info ]-PrintNums          : 108.
2024-04-08 10:38:13-P[48233]-T[48244]-[Info ]-Producer           : 109.
2024-04-08 10:38:13-P[48233]-T[48254]-[Info ]-PrintNums          : 109.
2024-04-08 10:38:13-P[48233]-T[48244]-[Info ]-Producer           : 110.
2024-04-08 10:38:13-P[48233]-T[48252]-[Info ]-PrintNums          : 110.
2024-04-08 10:38:13-P[48233]-T[48244]-[Info ]-Producer           : 111.
2024-04-08 10:38:13-P[48233]-T[48247]-[Info ]-PrintNums          : 111.
2024-04-08 10:38:13-P[48233]-T[48244]-[Info ]-Producer           : 112.
2024-04-08 10:38:13-P[48233]-T[48244]-[Info ]-Producer           : 113.
2024-04-08 10:38:13-P[48233]-T[48251]-[Info ]-PrintNums          : 113.
2024-04-08 10:38:13-P[48233]-T[48244]-[Info ]-Producer           : 114.
2024-04-08 10:38:13-P[48233]-T[48247]-[Info ]-PrintNums          : 114.
2024-04-08 10:38:13-P[48233]-T[48244]-[Info ]-Producer           : 115.
2024-04-08 10:38:13-P[48233]-T[48245]-[Info ]-PrintNums          : 115.
2024-04-08 10:38:13-P[48233]-T[48244]-[Info ]-Producer           : 116.
2024-04-08 10:38:13-P[48233]-T[48247]-[Info ]-PrintNums          : 116.
2024-04-08 10:38:13-P[48233]-T[48244]-[Info ]-Producer           : 117.
2024-04-08 10:38:13-P[48233]-T[48246]-[Info ]-PrintNums          : 117.
2024-04-08 10:38:13-P[48233]-T[48244]-[Info ]-Producer           : 118.
2024-04-08 10:38:13-P[48233]-T[48245]-[Info ]-PrintNums          : 118.
2024-04-08 10:38:13-P[48233]-T[48244]-[Info ]-Producer           : 119.
2024-04-08 10:38:13-P[48233]-T[48246]-[Info ]-PrintNums          : 119.
2024-04-08 10:38:13-P[48233]-T[48236]-[Info ]-Producer           : 120.
2024-04-08 10:38:13-P[48233]-T[48254]-[Info ]-PrintNums          : 120.
2024-04-08 10:38:13-P[48233]-T[48236]-[Info ]-Producer           : 121.
2024-04-08 10:38:13-P[48233]-T[48254]-[Info ]-PrintNums          : 121.
2024-04-08 10:38:13-P[48233]-T[48236]-[Info ]-Producer           : 122.
2024-04-08 10:38:13-P[48233]-T[48254]-[Info ]-PrintNums          : 122.
2024-04-08 10:38:13-P[48233]-T[48236]-[Info ]-Producer           : 123.
2024-04-08 10:38:13-P[48233]-T[48250]-[Info ]-PrintNums          : 123.
2024-04-08 10:38:13-P[48233]-T[48236]-[Info ]-Producer           : 124.
2024-04-08 10:38:13-P[48233]-T[48253]-[Info ]-PrintNums          : 124.
2024-04-08 10:38:13-P[48233]-T[48236]-[Info ]-Producer           : 125.
2024-04-08 10:38:13-P[48233]-T[48252]-[Info ]-PrintNums          : 125.
2024-04-08 10:38:13-P[48233]-T[48236]-[Info ]-Producer           : 126.
2024-04-08 10:38:13-P[48233]-T[48252]-[Info ]-PrintNums          : 126.
2024-04-08 10:38:13-P[48233]-T[48236]-[Info ]-Producer           : 127.
2024-04-08 10:38:13-P[48233]-T[48253]-[Info ]-PrintNums          : 127.
2024-04-08 10:38:13-P[48233]-T[48236]-[Info ]-Producer           : 128.
2024-04-08 10:38:13-P[48233]-T[48248]-[Info ]-PrintNums          : 128.
2024-04-08 10:38:13-P[48233]-T[48236]-[Info ]-Producer           : 129.
2024-04-08 10:38:13-P[48233]-T[48247]-[Info ]-PrintNums          : 129.
2024-04-08 10:38:13-P[48233]-T[48236]-[Info ]-Producer           : 130.
2024-04-08 10:38:13-P[48233]-T[48246]-[Info ]-PrintNums          : 130.
2024-04-08 10:38:13-P[48233]-T[48236]-[Info ]-Producer           : 131.
2024-04-08 10:38:13-P[48233]-T[48252]-[Info ]-PrintNums          : 131.
2024-04-08 10:38:13-P[48233]-T[48236]-[Info ]-Producer           : 132.
2024-04-08 10:38:13-P[48233]-T[48248]-[Info ]-PrintNums          : 132.
2024-04-08 10:38:13-P[48233]-T[48236]-[Info ]-Producer           : 133.
2024-04-08 10:38:13-P[48233]-T[48250]-[Info ]-PrintNums          : 133.
2024-04-08 10:38:13-P[48233]-T[48236]-[Info ]-Producer           : 134.
2024-04-08 10:38:13-P[48233]-T[48250]-[Info ]-PrintNums          : 134.
2024-04-08 10:38:13-P[48233]-T[48236]-[Info ]-Producer           : 135.
2024-04-08 10:38:13-P[48233]-T[48248]-[Info ]-PrintNums          : 135.
2024-04-08 10:38:13-P[48233]-T[48236]-[Info ]-Producer           : 136.
2024-04-08 10:38:13-P[48233]-T[48248]-[Info ]-PrintNums          : 136.
2024-04-08 10:38:13-P[48233]-T[48236]-[Info ]-Producer           : 137.
2024-04-08 10:38:13-P[48233]-T[48252]-[Info ]-PrintNums          : 137.
2024-04-08 10:38:13-P[48233]-T[48236]-[Info ]-Producer           : 138.
2024-04-08 10:38:13-P[48233]-T[48248]-[Info ]-PrintNums          : 138.
2024-04-08 10:38:13-P[48233]-T[48236]-[Info ]-Producer           : 139.
2024-04-08 10:38:13-P[48233]-T[48248]-[Info ]-PrintNums          : 139.
2024-04-08 10:38:13-P[48233]-T[48238]-[Info ]-Producer           : 140.
2024-04-08 10:38:13-P[48233]-T[48248]-[Info ]-PrintNums          : 140.
2024-04-08 10:38:13-P[48233]-T[48238]-[Info ]-Producer           : 141.
2024-04-08 10:38:13-P[48233]-T[48248]-[Info ]-PrintNums          : 141.
2024-04-08 10:38:13-P[48233]-T[48238]-[Info ]-Producer           : 142.
2024-04-08 10:38:13-P[48233]-T[48249]-[Info ]-PrintNums          : 142.
2024-04-08 10:38:13-P[48233]-T[48238]-[Info ]-Producer           : 143.
2024-04-08 10:38:13-P[48233]-T[48247]-[Info ]-PrintNums          : 143.
2024-04-08 10:38:13-P[48233]-T[48238]-[Info ]-Producer           : 144.
2024-04-08 10:38:13-P[48233]-T[48253]-[Info ]-PrintNums          : 144.
2024-04-08 10:38:13-P[48233]-T[48238]-[Info ]-Producer           : 145.
2024-04-08 10:38:13-P[48233]-T[48246]-[Info ]-PrintNums          : 145.
2024-04-08 10:38:13-P[48233]-T[48238]-[Info ]-Producer           : 146.
2024-04-08 10:38:13-P[48233]-T[48248]-[Info ]-PrintNums          : 146.
2024-04-08 10:38:13-P[48233]-T[48238]-[Info ]-Producer           : 147.
2024-04-08 10:38:13-P[48233]-T[48251]-[Info ]-PrintNums          : 147.
2024-04-08 10:38:13-P[48233]-T[48238]-[Info ]-Producer           : 148.
2024-04-08 10:38:13-P[48233]-T[48250]-[Info ]-PrintNums          : 148.
2024-04-08 10:38:13-P[48233]-T[48238]-[Info ]-Producer           : 149.
2024-04-08 10:38:13-P[48233]-T[48254]-[Info ]-PrintNums          : 149.
2024-04-08 10:38:13-P[48233]-T[48238]-[Info ]-Producer           : 150.
2024-04-08 10:38:13-P[48233]-T[48251]-[Info ]-PrintNums          : 150.
2024-04-08 10:38:13-P[48233]-T[48238]-[Info ]-Producer           : 151.
2024-04-08 10:38:13-P[48233]-T[48253]-[Info ]-PrintNums          : 151.
2024-04-08 10:38:13-P[48233]-T[48238]-[Info ]-Producer           : 152.
2024-04-08 10:38:13-P[48233]-T[48246]-[Info ]-PrintNums          : 152.
2024-04-08 10:38:13-P[48233]-T[48238]-[Info ]-Producer           : 153.
2024-04-08 10:38:13-P[48233]-T[48248]-[Info ]-PrintNums          : 153.
2024-04-08 10:38:13-P[48233]-T[48238]-[Info ]-Producer           : 154.
2024-04-08 10:38:13-P[48233]-T[48250]-[Info ]-PrintNums          : 154.
2024-04-08 10:38:13-P[48233]-T[48238]-[Info ]-Producer           : 155.
2024-04-08 10:38:13-P[48233]-T[48238]-[Info ]-Producer           : 156.
2024-04-08 10:38:13-P[48233]-T[48249]-[Info ]-PrintNums          : 156.
2024-04-08 10:38:13-P[48233]-T[48238]-[Info ]-Producer           : 157.
2024-04-08 10:38:13-P[48233]-T[48247]-[Info ]-PrintNums          : 157.
2024-04-08 10:38:13-P[48233]-T[48238]-[Info ]-Producer           : 158.
2024-04-08 10:38:13-P[48233]-T[48254]-[Info ]-PrintNums          : 158.
2024-04-08 10:38:13-P[48233]-T[48238]-[Info ]-Producer           : 159.
2024-04-08 10:38:13-P[48233]-T[48250]-[Info ]-PrintNums          : 159.
2024-04-08 10:38:13-P[48233]-T[48240]-[Info ]-Producer           : 160.
2024-04-08 10:38:13-P[48233]-T[48254]-[Info ]-PrintNums          : 160.
2024-04-08 10:38:13-P[48233]-T[48240]-[Info ]-Producer           : 161.
2024-04-08 10:38:13-P[48233]-T[48249]-[Info ]-PrintNums          : 161.
2024-04-08 10:38:13-P[48233]-T[48240]-[Info ]-Producer           : 162.
2024-04-08 10:38:13-P[48233]-T[48254]-[Info ]-PrintNums          : 162.
2024-04-08 10:38:13-P[48233]-T[48240]-[Info ]-Producer           : 163.
2024-04-08 10:38:13-P[48233]-T[48252]-[Info ]-PrintNums          : 163.
2024-04-08 10:38:13-P[48233]-T[48240]-[Info ]-Producer           : 164.
2024-04-08 10:38:13-P[48233]-T[48249]-[Info ]-PrintNums          : 164.
2024-04-08 10:38:13-P[48233]-T[48240]-[Info ]-Producer           : 165.
2024-04-08 10:38:13-P[48233]-T[48252]-[Info ]-PrintNums          : 165.
2024-04-08 10:38:13-P[48233]-T[48240]-[Info ]-Producer           : 166.
2024-04-08 10:38:13-P[48233]-T[48248]-[Info ]-PrintNums          : 166.
2024-04-08 10:38:13-P[48233]-T[48240]-[Info ]-Producer           : 167.
2024-04-08 10:38:13-P[48233]-T[48248]-[Info ]-PrintNums          : 167.
2024-04-08 10:38:13-P[48233]-T[48240]-[Info ]-Producer           : 168.
2024-04-08 10:38:13-P[48233]-T[48251]-[Info ]-PrintNums          : 168.
2024-04-08 10:38:13-P[48233]-T[48240]-[Info ]-Producer           : 169.
2024-04-08 10:38:13-P[48233]-T[48251]-[Info ]-PrintNums          : 169.
2024-04-08 10:38:13-P[48233]-T[48240]-[Info ]-Producer           : 170.
2024-04-08 10:38:13-P[48233]-T[48246]-[Info ]-PrintNums          : 170.
2024-04-08 10:38:13-P[48233]-T[48240]-[Info ]-Producer           : 171.
2024-04-08 10:38:13-P[48233]-T[48246]-[Info ]-PrintNums          : 171.
2024-04-08 10:38:13-P[48233]-T[48240]-[Info ]-Producer           : 172.
2024-04-08 10:38:13-P[48233]-T[48251]-[Info ]-PrintNums          : 172.
2024-04-08 10:38:13-P[48233]-T[48240]-[Info ]-Producer           : 173.
2024-04-08 10:38:13-P[48233]-T[48252]-[Info ]-PrintNums          : 173.
2024-04-08 10:38:13-P[48233]-T[48240]-[Info ]-Producer           : 174.
2024-04-08 10:38:13-P[48233]-T[48250]-[Info ]-PrintNums          : 174.
2024-04-08 10:38:13-P[48233]-T[48240]-[Info ]-Producer           : 175.
2024-04-08 10:38:13-P[48233]-T[48246]-[Info ]-PrintNums          : 175.
2024-04-08 10:38:13-P[48233]-T[48240]-[Info ]-Producer           : 176.
2024-04-08 10:38:13-P[48233]-T[48245]-[Info ]-PrintNums          : 176.
2024-04-08 10:38:13-P[48233]-T[48240]-[Info ]-Producer           : 177.
2024-04-08 10:38:13-P[48233]-T[48249]-[Info ]-PrintNums          : 177.
2024-04-08 10:38:13-P[48233]-T[48240]-[Info ]-Producer           : 178.
2024-04-08 10:38:13-P[48233]-T[48253]-[Info ]-PrintNums          : 178.
2024-04-08 10:38:13-P[48233]-T[48240]-[Info ]-Producer           : 179.
2024-04-08 10:38:13-P[48233]-T[48251]-[Info ]-PrintNums          : 179.
2024-04-08 10:38:13-P[48233]-T[48242]-[Info ]-Producer           : 180.
2024-04-08 10:38:13-P[48233]-T[48245]-[Info ]-PrintNums          : 180.
2024-04-08 10:38:13-P[48233]-T[48242]-[Info ]-Producer           : 181.
2024-04-08 10:38:13-P[48233]-T[48246]-[Info ]-PrintNums          : 181.
2024-04-08 10:38:13-P[48233]-T[48242]-[Info ]-Producer           : 182.
2024-04-08 10:38:13-P[48233]-T[48253]-[Info ]-PrintNums          : 182.
2024-04-08 10:38:13-P[48233]-T[48242]-[Info ]-Producer           : 183.
2024-04-08 10:38:13-P[48233]-T[48254]-[Info ]-PrintNums          : 183.
2024-04-08 10:38:13-P[48233]-T[48242]-[Info ]-Producer           : 184.
2024-04-08 10:38:13-P[48233]-T[48254]-[Info ]-PrintNums          : 184.
2024-04-08 10:38:13-P[48233]-T[48242]-[Info ]-Producer           : 185.
2024-04-08 10:38:13-P[48233]-T[48250]-[Info ]-PrintNums          : 185.
2024-04-08 10:38:13-P[48233]-T[48242]-[Info ]-Producer           : 186.
2024-04-08 10:38:13-P[48233]-T[48249]-[Info ]-PrintNums          : 186.
2024-04-08 10:38:13-P[48233]-T[48242]-[Info ]-Producer           : 187.
2024-04-08 10:38:13-P[48233]-T[48252]-[Info ]-PrintNums          : 187.
2024-04-08 10:38:13-P[48233]-T[48242]-[Info ]-Producer           : 188.
2024-04-08 10:38:13-P[48233]-T[48252]-[Info ]-PrintNums          : 188.
2024-04-08 10:38:13-P[48233]-T[48242]-[Info ]-Producer           : 189.
2024-04-08 10:38:13-P[48233]-T[48253]-[Info ]-PrintNums          : 189.
2024-04-08 10:38:13-P[48233]-T[48242]-[Info ]-Producer           : 190.
2024-04-08 10:38:13-P[48233]-T[48253]-[Info ]-PrintNums          : 190.
2024-04-08 10:38:13-P[48233]-T[48242]-[Info ]-Producer           : 191.
2024-04-08 10:38:13-P[48233]-T[48247]-[Info ]-PrintNums          : 191.
2024-04-08 10:38:13-P[48233]-T[48242]-[Info ]-Producer           : 192.
2024-04-08 10:38:13-P[48233]-T[48251]-[Info ]-PrintNums          : 192.
2024-04-08 10:38:13-P[48233]-T[48242]-[Info ]-Producer           : 193.
2024-04-08 10:38:13-P[48233]-T[48250]-[Info ]-PrintNums          : 193.
2024-04-08 10:38:13-P[48233]-T[48242]-[Info ]-Producer           : 194.
2024-04-08 10:38:13-P[48233]-T[48251]-[Info ]-PrintNums          : 194.
2024-04-08 10:38:13-P[48233]-T[48242]-[Info ]-Producer           : 195.
2024-04-08 10:38:13-P[48233]-T[48246]-[Info ]-PrintNums          : 195.
2024-04-08 10:38:13-P[48233]-T[48242]-[Info ]-Producer           : 196.
2024-04-08 10:38:13-P[48233]-T[48253]-[Info ]-PrintNums          : 196.
2024-04-08 10:38:13-P[48233]-T[48242]-[Info ]-Producer           : 197.
2024-04-08 10:38:13-P[48233]-T[48253]-[Info ]-PrintNums          : 197.
2024-04-08 10:38:13-P[48233]-T[48242]-[Info ]-Producer           : 198.
2024-04-08 10:38:13-P[48233]-T[48247]-[Info ]-PrintNums          : 198.
2024-04-08 10:38:13-P[48233]-T[48242]-[Info ]-Producer           : 199.
2024-04-08 10:38:13-P[48233]-T[48246]-[Info ]-PrintNums          : 199.

  2、char[]类型

只是数字后面拼接了字符串。代码进行了些许调整。

(1)Demo

#include "ThreadPool.h"#define TEST_CONSUMER_THREAD_NUM  10
#define TEST_PRODUCER_THREAD_NUM  10
#define TEST_INTERVAL_VAL         20
#define PRODUCER_SUM_VAL          (TEST_PRODUCER_THREAD_NUM * TEST_INTERVAL_VAL)
#define CONSUMER_VAL              (PRODUCER_SUM_VAL / TEST_CONSUMER_THREAD_NUM)
#define TEST_STR_DATA_SUFFIX      "I am a happy little angel. "
#define TEST_STR_DATA_PREFIX_LEN  100#define QUEUE_LEN                 8#define GLOBAL_ARRAY_COL_NUM      2
#define GLOBAL_ARRAY_ROW_NUM      TEST_PRODUCER_THREAD_NUMint GlobalArray[GLOBAL_ARRAY_ROW_NUM][GLOBAL_ARRAY_COL_NUM];typedef struct ToatalSt
{ThrdPool        *Pool;int             AccessIndex;OneThrdMutexSt  *Mutex;
}ToatalSt;Status PrintNums(void* Arg)
{LogFormat(Info,"PrintStr           : %s.\n",((CopyStr *)Arg)->String);return SUCCESS_FLAG;
}void* Producer(void* Arg)
{int       i;int       j               = 0;int       Idx;ToatalSt  *Total          = (ToatalSt *)Arg;TaskGrpSt **TaskGrpArry   = (TaskGrpSt **)MyMalloc(sizeof(TaskGrpSt *) * INIT_TASK_GRP_NUMS);TaskSt    *TaskArray      = (TaskSt*)MyMalloc(sizeof(TaskSt) * INIT_TASK_GRP_NUMS);int       TestDataLen     = strlen(TEST_STR_DATA_SUFFIX);THRD_MUTEX_LOCK_F(Total->Mutex);Idx = Total->AccessIndex;Total->AccessIndex++;THRD_MUTEX_UNLOCK_F(Total->Mutex);for (i = 0; i < INIT_TASK_GRP_NUMS; i++){//初始化失败的话,会内存泄露,后面改进。if(TaskGrpInit(&(TaskGrpArry[i]), 1, TASK_RETRY_TIMES) != SUCCESS_FLAG){goto ERR_STAGE;}TaskArray[i].Func  = PrintNums;InitCopyStrDefLen((CopyStr**)(&(TaskArray[i].Arg)),TestDataLen + TEST_STR_DATA_PREFIX_LEN);TaskArray[i].State = TASK_INIT_STATE;TaskGrpAddTask(TaskGrpArry[i], &(TaskArray[i]));}for ( i = GlobalArray[Idx][0]; i < GlobalArray[Idx][1]; i++){
SCAN_REC_STAGE:for (; j < INIT_TASK_GRP_NUMS; j++)//避免每次从头扫描数组,提升效率。{THRD_RW_LOCK_READ_LOCK_F(TaskGrpArry[j]->StateRwLock);if (TaskGrpArry[j]->State == TASK_GRP_END_STATE || TaskGrpArry[j]->State == TASK_GRP_INIT_STATE)//有任务结束或任务空间未使用。{THRD_RW_LOCK_UNLOCK_F(TaskGrpArry[j]->StateRwLock);break;}THRD_RW_LOCK_UNLOCK_F(TaskGrpArry[j]->StateRwLock);}if (j >= INIT_TASK_GRP_NUMS)//说明没有可用空间{j = 0;goto SCAN_REC_STAGE;//继续扫描数据查看是否有空间腾出。}//从数据库中抽取x万条数据。ClearCopyStr(TaskArray[j].Arg,0);sprintf(((CopyStr*)(TaskArray[j].Arg))->String,"%d",i);((CopyStr*)(TaskArray[j].Arg))->StrEffectiveLen = strlen(((CopyStr*)(TaskArray[j].Arg))->String);ExecCopyStr(TaskArray[j].Arg," ");ExecCopyStr(TaskArray[j].Arg,TEST_STR_DATA_SUFFIX);//将任务组压入线程池中。LogFormat(Info,"Producer           : %s.\n",((CopyStr*)(TaskArray[j].Arg))->String);ThrdPoolAddTaskGrp(Total->Pool, TaskGrpArry[j]);j++;//防止重复扫描数据。if (j >= INIT_TASK_GRP_NUMS){j = 0;}}//由于数据是存储在生产者线程中的,所以可能出现任务下发完了,但消费者还没有完成任务。//需要等所有任务完成。THRD_BARRIER_WAIT_F(Total->Pool->ProducerBarrier);THRD_BARRIER_WAIT_F(Total->Pool->AllBarrier);//释放资源for (i = 0; i < INIT_TASK_GRP_NUMS; i++){if(TaskGrpDstry(&(TaskGrpArry[i])) != SUCCESS_FLAG){goto ERR_STAGE;}DestroyCopyStr((CopyStr**)(&(TaskArray[i].Arg)));TaskArray[i].Func  = NULL;TaskArray[i].State = TASK_INIT_STATE;}free(TaskGrpArry);free(TaskArray);TaskGrpArry = NULL;TaskArray   = NULL;THRD_EXIT(SUCCESS_FLAG);
ERR_STAGE:THRD_EXIT(FAIL_FLAG);
}Status main()
{int             i;ToatalSt        Total;OneThrdMutexCreate(&(Total.Mutex),PTHREAD_PROCESS_PRIVATE,PTHREAD_MUTEX_ERRORCHECK,PTHREAD_MUTEX_STALLED,2,1);Total.AccessIndex = 0;for ( i = 0; i < GLOBAL_ARRAY_ROW_NUM; i++){GlobalArray[i][0] = i * TEST_INTERVAL_VAL;GlobalArray[i][1] = GlobalArray[i][0] + TEST_INTERVAL_VAL;}ThrdPoolInit(&(Total.Pool), TEST_CONSUMER_THREAD_NUM, TEST_PRODUCER_THREAD_NUM, QUEUE_LEN,Producer, &Total);ThrdPoolDstry(&(Total.Pool));OneThrdMutexFree(&(Total.Mutex));return SUCCESS_FLAG;
}

(2)编译

[gbase@czg2 SqQueue]$ make clean
rm -rf TestSqQueue
rm -rf TestThreadQ
[gbase@czg2 SqQueue]$ make
gcc -Wall -Wextra -O3 -std=gnu11  TestThreadQ.c -o TestThreadQ -I /opt/Developer/ComputerLanguageStudy/C/DataStructureTestSrc/PublicFunction/ -I /opt/Developer/ComputerLanguageStudy/C/DataStructureTestSrc/Log/ -I /opt/Developer/ComputerLanguageStudy/C/DataStructureTestSrc/PublicFunction/Pthread/ -L /opt/Developer/ComputerLanguageStudy/C/DataStructureTestSrc/PublicFunction/Make/Libs/ -L /usr/lib64/ -l PublicFunction -l Log -l MyThread -l SqQueue
gcc -Wall -Wextra -O3 -std=gnu11  main.c -o TestSqQueue -I /opt/Developer/ComputerLanguageStudy/C/DataStructureTestSrc/PublicFunction/ -I /opt/Developer/ComputerLanguageStudy/C/DataStructureTestSrc/Log/ -I /opt/Developer/ComputerLanguageStudy/C/DataStructureTestSrc/PublicFunction/Pthread/ -L /opt/Developer/ComputerLanguageStudy/C/DataStructureTestSrc/PublicFunction/Make/Libs/ -L /usr/lib64/ -l PublicFunction -l Log -l MyThread -l SqQueue

(3)验证

消费者和生产者分别拿到了0-199,没有重复消费、多消费、少消费的情况发生,说明我们实现的正确。

[gbase@czg2 MyPool]$ ./TestThreadPool |sort -t ":" -k 4 -n
2024-04-08 14:54:22-P[53852]-T[53856]-[Info ]-Producer           : 0 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53864]-[Warn ]-ThrdCondTimedWait  : Normal, Time Out.
2024-04-08 14:54:22-P[53852]-T[53865]-[Warn ]-ThrdCondTimedWait  : Normal, Time Out.
2024-04-08 14:54:22-P[53852]-T[53866]-[Warn ]-ThrdCondTimedWait  : Normal, Time Out.
2024-04-08 14:54:22-P[53852]-T[53868]-[Warn ]-ThrdCondTimedWait  : Normal, Time Out.
2024-04-08 14:54:22-P[53852]-T[53869]-[Warn ]-ThrdCondTimedWait  : Normal, Time Out.
2024-04-08 14:54:22-P[53852]-T[53870]-[Info ]-PrintStr           : 0 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53870]-[Warn ]-ThrdCondTimedWait  : Normal, Time Out.
2024-04-08 14:54:22-P[53852]-T[53872]-[Warn ]-ThrdCondTimedWait  : Normal, Time Out.
2024-04-08 14:54:22-P[53852]-T[53873]-[Warn ]-ThrdCondTimedWait  : Normal, Time Out.
Producer           : 15 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53856]-[Info ]-Producer           : 1 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53868]-[Info ]-PrintStr           : 1 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53856]-[Info ]-Producer           : 2 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53869]-[Info ]-PrintStr           : 2 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53856]-[Info ]-Producer           : 3 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53871]-[Info ]-PrintStr           : 3 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53856]-[Info ]-Producer           : 4 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53868]-[Info ]-PrintStr           : 4 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53856]-[Info ]-Producer           : 5 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53867]-[Info ]-PrintStr           : 5 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53856]-[Info ]-Producer           : 6 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53866]-[Info ]-PrintStr           : 6 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53856]-[Info ]-Producer           : 7 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53866]-[Info ]-PrintStr           : 7 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53856]-[Info ]-Producer           : 8 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53866]-[Info ]-PrintStr           : 8 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53856]-[Info ]-Producer           : 9 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53856]-[Info ]-Producer           : 10 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53866]-[Info ]-PrintStr           : 10 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53856]-[Info ]-Producer           : 11 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53869]-[Info ]-PrintStr           : 11 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53856]-[Info ]-Producer           : 12 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53865]-[Info ]-PrintStr           : 12 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53856]-[Info ]-Producer           : 13 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53865]-[Info ]-PrintStr           : 13 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53856]-[Info ]-Producer           : 14 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53865]-[Info ]-PrintStr           : 14 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53864]-[Info ]-PrintStr           : 15 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53856]-[Info ]-Producer           : 16 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53868]-[Info ]-PrintStr           : 16 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53856]-[Info ]-Producer           : 17 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53872]-[Info ]-PrintStr           : 17 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53856]-[Info ]-Producer           : 18 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53869]-[Info ]-PrintStr           : 18 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53856]-[Info ]-Producer           : 19 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53872]-[Info ]-PrintStr           : 19 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53859]-[Info ]-Producer           : 20 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53870]-[Info ]-PrintStr           : 20 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53859]-[Info ]-Producer           : 21 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53869]-[Info ]-PrintStr           : 21 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53859]-[Info ]-Producer           : 22 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53868]-[Info ]-PrintStr           : 22 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53859]-[Info ]-Producer           : 23 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53872]-[Info ]-PrintStr           : 23 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53859]-[Info ]-Producer           : 24 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53865]-[Info ]-PrintStr           : 24 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53859]-[Info ]-Producer           : 25 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53865]-[Info ]-PrintStr           : 25 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53859]-[Info ]-Producer           : 26 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53867]-[Info ]-PrintStr           : 26 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53859]-[Info ]-Producer           : 27 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53867]-[Info ]-PrintStr           : 27 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53859]-[Info ]-Producer           : 28 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53866]-[Info ]-PrintStr           : 28 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53859]-[Info ]-Producer           : 29 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53866]-[Info ]-PrintStr           : 29 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53859]-[Info ]-Producer           : 30 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53866]-[Info ]-PrintStr           : 30 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53859]-[Info ]-Producer           : 31 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53868]-[Info ]-PrintStr           : 31 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53859]-[Info ]-Producer           : 32 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53868]-[Info ]-PrintStr           : 32 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53859]-[Info ]-Producer           : 33 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53865]-[Info ]-PrintStr           : 33 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53859]-[Info ]-Producer           : 34 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53867]-[Info ]-PrintStr           : 34 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53859]-[Info ]-Producer           : 35 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53867]-[Info ]-PrintStr           : 35 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53859]-[Info ]-Producer           : 36 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53867]-[Info ]-PrintStr           : 36 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53859]-[Info ]-Producer           : 37 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53868]-[Info ]-PrintStr           : 37 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53859]-[Info ]-Producer           : 38 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53871]-[Info ]-PrintStr           : 38 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53859]-[Info ]-Producer           : 39 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53864]-[Info ]-PrintStr           : 39 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53858]-[Info ]-Producer           : 40 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53870]-[Info ]-PrintStr           : 40 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53858]-[Info ]-Producer           : 41 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53869]-[Info ]-PrintStr           : 41 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53858]-[Info ]-Producer           : 42 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53871]-[Info ]-PrintStr           : 42 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53858]-[Info ]-Producer           : 43 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53869]-[Info ]-PrintStr           : 43 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53858]-[Info ]-Producer           : 44 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53864]-[Info ]-PrintStr           : 44 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53858]-[Info ]-Producer           : 45 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53871]-[Info ]-PrintStr           : 45 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53858]-[Info ]-Producer           : 46 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53871]-[Info ]-PrintStr           : 46 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53858]-[Info ]-Producer           : 47 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53867]-[Info ]-PrintStr           : 47 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53858]-[Info ]-Producer           : 48 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53868]-[Info ]-PrintStr           : 48 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53858]-[Info ]-Producer           : 49 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53866]-[Info ]-PrintStr           : 49 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53858]-[Info ]-Producer           : 50 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53866]-[Info ]-PrintStr           : 50 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53858]-[Info ]-Producer           : 51 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53865]-[Info ]-PrintStr           : 51 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53858]-[Info ]-Producer           : 52 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53867]-[Info ]-PrintStr           : 52 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53858]-[Info ]-Producer           : 53 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53864]-[Info ]-PrintStr           : 53 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53856]-[Info ]-2024-04-08 14:54:22-P[53852]-T[53866]-[Info ]-PrintStr           : 9 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53858]-[Info ]-Producer           : 54 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53867]-[Info ]-PrintStr           : 54 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53858]-[Info ]-Producer           : 55 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53867]-[Info ]-PrintStr           : 55 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53858]-[Info ]-Producer           : 56 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53864]-[Info ]-PrintStr           : 56 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53858]-[Info ]-Producer           : 57 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53869]-[Info ]-PrintStr           : 57 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53858]-[Info ]-Producer           : 58 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53865]-[Info ]-PrintStr           : 58 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53858]-[Info ]-Producer           : 59 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53864]-[Info ]-PrintStr           : 59 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53855]-[Info ]-Producer           : 60 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53870]-[Info ]-PrintStr           : 60 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53855]-[Info ]-Producer           : 61 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53868]-[Info ]-PrintStr           : 61 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53855]-[Info ]-Producer           : 62 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53868]-[Info ]-PrintStr           : 62 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53855]-[Info ]-Producer           : 63 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53869]-[Info ]-PrintStr           : 63 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53855]-[Info ]-Producer           : 64 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53864]-[Info ]-PrintStr           : 64 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53855]-[Info ]-Producer           : 65 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53872]-[Info ]-PrintStr           : 65 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53855]-[Info ]-Producer           : 66 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53865]-[Info ]-PrintStr           : 66 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53855]-[Info ]-Producer           : 67 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53864]-[Info ]-PrintStr           : 67 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53855]-[Info ]-Producer           : 68 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53866]-[Info ]-PrintStr           : 68 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53855]-[Info ]-Producer           : 69 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53866]-[Info ]-PrintStr           : 69 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53855]-[Info ]-Producer           : 70 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53864]-[Info ]-PrintStr           : 70 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53855]-[Info ]-Producer           : 71 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53864]-[Info ]-PrintStr           : 71 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53855]-[Info ]-Producer           : 72 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53869]-[Info ]-PrintStr           : 72 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53855]-[Info ]-Producer           : 73 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53864]-[Info ]-PrintStr           : 73 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53855]-[Info ]-Producer           : 74 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53864]-[Info ]-PrintStr           : 74 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53855]-[Info ]-Producer           : 75 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53872]-[Info ]-PrintStr           : 75 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53855]-[Info ]-Producer           : 76 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53871]-[Info ]-PrintStr           : 76 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53855]-[Info ]-Producer           : 77 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53868]-[Info ]-PrintStr           : 77 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53855]-[Info ]-Producer           : 78 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53870]-[Info ]-PrintStr           : 78 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53855]-[Info ]-Producer           : 79 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53870]-[Info ]-PrintStr           : 79 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53854]-[Info ]-Producer           : 80 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53871]-[Info ]-PrintStr           : 80 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53854]-[Info ]-Producer           : 81 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53871]-[Info ]-PrintStr           : 81 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53854]-[Info ]-Producer           : 82 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53871]-[Info ]-PrintStr           : 82 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53854]-[Info ]-Producer           : 83 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53871]-[Info ]-PrintStr           : 83 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53854]-[Info ]-Producer           : 84 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53871]-[Info ]-PrintStr           : 84 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53854]-[Info ]-Producer           : 85 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53871]-[Info ]-PrintStr           : 85 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53854]-[Info ]-Producer           : 86 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53871]-[Info ]-PrintStr           : 86 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53854]-[Info ]-Producer           : 87 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53871]-[Info ]-PrintStr           : 87 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53854]-[Info ]-Producer           : 88 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53864]-[Info ]-PrintStr           : 88 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53854]-[Info ]-Producer           : 89 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53864]-[Info ]-PrintStr           : 89 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53854]-[Info ]-Producer           : 90 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53864]-[Info ]-PrintStr           : 90 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53854]-[Info ]-Producer           : 91 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53864]-[Info ]-PrintStr           : 91 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53854]-[Info ]-Producer           : 92 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53864]-[Info ]-PrintStr           : 92 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53854]-[Info ]-Producer           : 93 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53864]-[Info ]-PrintStr           : 93 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53854]-[Info ]-Producer           : 94 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53864]-[Info ]-PrintStr           : 94 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53854]-[Info ]-Producer           : 95 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53864]-[Info ]-PrintStr           : 95 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53854]-[Info ]-Producer           : 96 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53873]-[Info ]-PrintStr           : 96 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53854]-[Info ]-Producer           : 97 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53869]-[Info ]-PrintStr           : 97 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53854]-[Info ]-Producer           : 98 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53873]-[Info ]-PrintStr           : 98 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53854]-[Info ]-Producer           : 99 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53873]-[Info ]-PrintStr           : 99 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53860]-[Info ]-Producer           : 100 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53870]-[Info ]-PrintStr           : 100 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53860]-[Info ]-Producer           : 101 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53870]-[Info ]-PrintStr           : 101 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53860]-[Info ]-Producer           : 102 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53864]-[Info ]-PrintStr           : 102 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53860]-[Info ]-Producer           : 103 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53867]-[Info ]-PrintStr           : 103 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53860]-[Info ]-Producer           : 104 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53867]-[Info ]-PrintStr           : 104 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53860]-[Info ]-Producer           : 105 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53872]-[Info ]-PrintStr           : 105 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53860]-[Info ]-Producer           : 106 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53869]-[Info ]-PrintStr           : 106 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53860]-[Info ]-Producer           : 107 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53865]-[Info ]-PrintStr           : 107 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53860]-[Info ]-Producer           : 108 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53865]-[Info ]-PrintStr           : 108 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53860]-[Info ]-Producer           : 109 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53870]-[Info ]-PrintStr           : 109 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53860]-[Info ]-Producer           : 110 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53870]-[Info ]-PrintStr           : 110 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53860]-[Info ]-Producer           : 111 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53870]-[Info ]-PrintStr           : 111 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53860]-[Info ]-Producer           : 112 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53870]-[Info ]-PrintStr           : 112 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53860]-[Info ]-Producer           : 113 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53867]-[Info ]-PrintStr           : 113 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53860]-[Info ]-Producer           : 114 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53864]-[Info ]-PrintStr           : 114 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53860]-[Info ]-Producer           : 115 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53864]-[Info ]-PrintStr           : 115 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53860]-[Info ]-Producer           : 116 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53870]-[Info ]-PrintStr           : 116 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53860]-[Info ]-Producer           : 117 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53864]-[Info ]-PrintStr           : 117 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53860]-[Info ]-Producer           : 118 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53867]-[Info ]-PrintStr           : 118 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53860]-[Info ]-Producer           : 119 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53871]-[Info ]-PrintStr           : 119 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53862]-[Info ]-Producer           : 120 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53864]-[Info ]-PrintStr           : 120 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53862]-[Info ]-Producer           : 121 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53869]-[Info ]-PrintStr           : 121 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53862]-[Info ]-Producer           : 122 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53872]-[Info ]-PrintStr           : 122 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53862]-[Info ]-Producer           : 123 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53872]-[Info ]-PrintStr           : 123 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53862]-[Info ]-Producer           : 124 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53867]-[Info ]-PrintStr           : 124 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53862]-[Info ]-Producer           : 125 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53869]-[Info ]-PrintStr           : 125 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53862]-[Info ]-Producer           : 126 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53868]-[Info ]-PrintStr           : 126 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53862]-[Info ]-Producer           : 127 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53869]-[Info ]-PrintStr           : 127 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53862]-[Info ]-Producer           : 128 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53865]-[Info ]-PrintStr           : 128 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53862]-[Info ]-Producer           : 129 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53864]-[Info ]-PrintStr           : 129 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53862]-[Info ]-Producer           : 130 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53868]-[Info ]-PrintStr           : 130 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53862]-[Info ]-Producer           : 131 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53871]-[Info ]-PrintStr           : 131 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53862]-[Info ]-Producer           : 132 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53868]-[Info ]-PrintStr           : 132 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53862]-[Info ]-Producer           : 133 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53871]-[Info ]-PrintStr           : 133 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53862]-[Info ]-Producer           : 134 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53873]-[Info ]-PrintStr           : 134 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53862]-[Info ]-Producer           : 135 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53865]-[Info ]-PrintStr           : 135 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53862]-[Info ]-Producer           : 136 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53869]-[Info ]-PrintStr           : 136 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53862]-[Info ]-Producer           : 137 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53866]-[Info ]-PrintStr           : 137 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53862]-[Info ]-Producer           : 138 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53871]-[Info ]-PrintStr           : 138 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53862]-[Info ]-Producer           : 139 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53871]-[Info ]-PrintStr           : 139 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53863]-[Info ]-Producer           : 140 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53872]-[Info ]-PrintStr           : 140 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53863]-[Info ]-Producer           : 141 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53871]-[Info ]-PrintStr           : 141 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53863]-[Info ]-Producer           : 142 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53871]-[Info ]-PrintStr           : 142 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53863]-[Info ]-Producer           : 143 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53869]-[Info ]-PrintStr           : 143 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53863]-[Info ]-Producer           : 144 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53865]-[Info ]-PrintStr           : 144 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53863]-[Info ]-Producer           : 145 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53869]-[Info ]-PrintStr           : 145 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53863]-[Info ]-Producer           : 146 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53864]-[Info ]-PrintStr           : 146 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53863]-[Info ]-Producer           : 147 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53870]-[Info ]-PrintStr           : 147 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53863]-[Info ]-Producer           : 148 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53872]-[Info ]-PrintStr           : 148 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53863]-[Info ]-Producer           : 149 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53869]-[Info ]-PrintStr           : 149 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53863]-[Info ]-Producer           : 150 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53869]-[Info ]-PrintStr           : 150 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53863]-[Info ]-Producer           : 151 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53869]-[Info ]-PrintStr           : 151 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53863]-[Info ]-Producer           : 152 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53864]-[Info ]-PrintStr           : 152 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53863]-[Info ]-Producer           : 153 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53867]-[Info ]-PrintStr           : 153 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53863]-[Info ]-Producer           : 154 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53868]-[Info ]-PrintStr           : 154 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53863]-[Info ]-Producer           : 155 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53869]-[Info ]-PrintStr           : 155 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53863]-[Info ]-Producer           : 156 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53864]-[Info ]-PrintStr           : 156 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53863]-[Info ]-Producer           : 157 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53868]-[Info ]-PrintStr           : 157 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53863]-[Info ]-Producer           : 158 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53873]-[Info ]-PrintStr           : 158 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53863]-[Info ]-Producer           : 159 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53866]-[Info ]-PrintStr           : 159 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53857]-[Info ]-Producer           : 160 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53873]-[Info ]-PrintStr           : 160 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53857]-[Info ]-Producer           : 161 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53870]-[Info ]-PrintStr           : 161 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53857]-[Info ]-Producer           : 162 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53873]-[Info ]-PrintStr           : 162 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53857]-[Info ]-Producer           : 163 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53873]-[Info ]-PrintStr           : 163 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53857]-[Info ]-Producer           : 164 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53873]-[Info ]-PrintStr           : 164 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53857]-[Info ]-Producer           : 165 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53870]-[Info ]-PrintStr           : 165 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53857]-[Info ]-Producer           : 166 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53873]-[Info ]-PrintStr           : 166 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53857]-[Info ]-Producer           : 167 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53868]-[Info ]-PrintStr           : 167 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53857]-[Info ]-Producer           : 168 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53869]-[Info ]-PrintStr           : 168 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53857]-[Info ]-Producer           : 169 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53868]-[Info ]-PrintStr           : 169 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53857]-[Info ]-Producer           : 170 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53872]-[Info ]-PrintStr           : 170 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53857]-[Info ]-Producer           : 171 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53872]-[Info ]-PrintStr           : 171 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53857]-[Info ]-Producer           : 172 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53869]-[Info ]-PrintStr           : 172 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53857]-[Info ]-Producer           : 173 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53866]-[Info ]-PrintStr           : 173 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53857]-[Info ]-Producer           : 174 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53869]-[Info ]-PrintStr           : 174 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53857]-[Info ]-Producer           : 175 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53867]-[Info ]-PrintStr           : 175 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53857]-[Info ]-Producer           : 176 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53869]-[Info ]-PrintStr           : 176 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53857]-[Info ]-Producer           : 177 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53872]-[Info ]-PrintStr           : 177 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53857]-[Info ]-Producer           : 178 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53869]-[Info ]-PrintStr           : 178 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53857]-[Info ]-Producer           : 179 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53870]-[Info ]-PrintStr           : 179 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53861]-[Info ]-Producer           : 180 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53867]-[Info ]-PrintStr           : 180 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53861]-[Info ]-Producer           : 181 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53871]-[Info ]-PrintStr           : 181 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53861]-[Info ]-Producer           : 182 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53867]-[Info ]-PrintStr           : 182 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53861]-[Info ]-Producer           : 183 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53872]-[Info ]-PrintStr           : 183 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53861]-[Info ]-Producer           : 184 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53872]-[Info ]-PrintStr           : 184 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53861]-[Info ]-Producer           : 185 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53869]-[Info ]-PrintStr           : 185 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53861]-[Info ]-Producer           : 186 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53872]-[Info ]-PrintStr           : 186 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53861]-[Info ]-Producer           : 187 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53865]-[Info ]-PrintStr           : 187 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53861]-[Info ]-Producer           : 188 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53868]-[Info ]-PrintStr           : 188 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53861]-[Info ]-Producer           : 189 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53867]-[Info ]-PrintStr           : 189 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53861]-[Info ]-Producer           : 190 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53868]-[Info ]-PrintStr           : 190 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53861]-[Info ]-Producer           : 191 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53870]-[Info ]-PrintStr           : 191 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53861]-[Info ]-Producer           : 192 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53869]-[Info ]-PrintStr           : 192 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53861]-[Info ]-Producer           : 193 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53869]-[Info ]-PrintStr           : 193 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53861]-[Info ]-Producer           : 194 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53870]-[Info ]-PrintStr           : 194 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53861]-[Info ]-Producer           : 195 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53871]-[Info ]-PrintStr           : 195 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53861]-[Info ]-Producer           : 196 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53865]-[Info ]-PrintStr           : 196 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53861]-[Info ]-Producer           : 197 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53868]-[Info ]-PrintStr           : 197 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53861]-[Info ]-Producer           : 198 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53864]-[Info ]-PrintStr           : 198 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53861]-[Info ]-Producer           : 199 I am a happy little angel. .
2024-04-08 14:54:22-P[53852]-T[53866]-[Info ]-PrintStr           : 199 I am a happy little angel. .

六、性能比对

测试两百万数据,正确性上面验证过了这边就不展示了。

1、int类型

(1)队列

[gbase@czg2 SqQueue]$ perf stat -e page-faults ./TestThreadQPerformance counter stats for './TestThreadQ':239      page-faults:u                                               0.937809171 seconds time elapsed0.848014000 seconds user1.011984000 seconds sys[gbase@czg2 SqQueue]$ perf stat -e page-faults ./TestThreadQPerformance counter stats for './TestThreadQ':240      page-faults:u                                               0.965516773 seconds time elapsed0.802651000 seconds user1.104909000 seconds sys[gbase@czg2 SqQueue]$ perf stat -e page-faults ./TestThreadQPerformance counter stats for './TestThreadQ':243      page-faults:u                                               0.955249443 seconds time elapsed0.795319000 seconds user1.098636000 seconds sys

(2)线程池

[gbase@czg2 MyPool]$ perf stat -e page-faults ./TestThreadPool
2024-04-08 10:40:26-P[48564]-T[48580]-[Warn ]-ThrdCondTimedWait  : Normal, Time Out.
2024-04-08 10:40:26-P[48564]-T[48581]-[Warn ]-ThrdCondTimedWait  : Normal, Time Out.
2024-04-08 10:40:26-P[48564]-T[48575]-[Warn ]-ThrdCondTimedWait  : Normal, Time Out.
2024-04-08 10:40:26-P[48564]-T[48578]-[Warn ]-ThrdCondTimedWait  : Normal, Time Out.
2024-04-08 10:40:26-P[48564]-T[48583]-[Warn ]-ThrdCondTimedWait  : Normal, Time Out.
2024-04-08 10:40:26-P[48564]-T[48584]-[Warn ]-ThrdCondTimedWait  : Normal, Time Out.
2024-04-08 10:40:26-P[48564]-T[48576]-[Warn ]-ThrdCondTimedWait  : Normal, Time Out.
2024-04-08 10:40:26-P[48564]-T[48582]-[Warn ]-ThrdCondTimedWait  : Normal, Time Out.
2024-04-08 10:40:26-P[48564]-T[48579]-[Warn ]-ThrdCondTimedWait  : Normal, Time Out.
2024-04-08 10:40:26-P[48564]-T[48577]-[Warn ]-ThrdCondTimedWait  : Normal, Time Out.Performance counter stats for './TestThreadPool':330      page-faults:u                                               1.121115817 seconds time elapsed1.252635000 seconds user0.938719000 seconds sys[gbase@czg2 MyPool]$ perf stat -e page-faults ./TestThreadPool
2024-04-08 10:40:41-P[48714]-T[48716]-[Warn ]-ThrdCondTimedWait  : Normal, Time Out.
2024-04-08 10:40:42-P[48714]-T[48729]-[Warn ]-ThrdCondTimedWait  : Normal, Time Out.
2024-04-08 10:40:42-P[48714]-T[48731]-[Warn ]-ThrdCondTimedWait  : Normal, Time Out.
2024-04-08 10:40:42-P[48714]-T[48727]-[Warn ]-ThrdCondTimedWait  : Normal, Time Out.
2024-04-08 10:40:42-P[48714]-T[48734]-[Warn ]-ThrdCondTimedWait  : Normal, Time Out.
2024-04-08 10:40:42-P[48714]-T[48733]-[Warn ]-ThrdCondTimedWait  : Normal, Time Out.
2024-04-08 10:40:42-P[48714]-T[48728]-[Warn ]-ThrdCondTimedWait  : Normal, Time Out.
2024-04-08 10:40:42-P[48714]-T[48726]-[Warn ]-ThrdCondTimedWait  : Normal, Time Out.
2024-04-08 10:40:42-P[48714]-T[48730]-[Warn ]-ThrdCondTimedWait  : Normal, Time Out.
2024-04-08 10:40:42-P[48714]-T[48725]-[Warn ]-ThrdCondTimedWait  : Normal, Time Out.
2024-04-08 10:40:42-P[48714]-T[48732]-[Warn ]-ThrdCondTimedWait  : Normal, Time Out.Performance counter stats for './TestThreadPool':330      page-faults:u                                               1.105540928 seconds time elapsed1.180810000 seconds user0.954159000 seconds sys[gbase@czg2 MyPool]$ perf stat -e page-faults ./TestThreadPool
2024-04-08 10:40:44-P[48767]-T[48779]-[Warn ]-ThrdCondTimedWait  : Normal, Time Out.
2024-04-08 10:40:44-P[48767]-T[48787]-[Warn ]-ThrdCondTimedWait  : Normal, Time Out.
2024-04-08 10:40:44-P[48767]-T[48781]-[Warn ]-ThrdCondTimedWait  : Normal, Time Out.
2024-04-08 10:40:44-P[48767]-T[48786]-[Warn ]-ThrdCondTimedWait  : Normal, Time Out.
2024-04-08 10:40:44-P[48767]-T[48783]-[Warn ]-ThrdCondTimedWait  : Normal, Time Out.
2024-04-08 10:40:44-P[48767]-T[48785]-[Warn ]-ThrdCondTimedWait  : Normal, Time Out.
2024-04-08 10:40:44-P[48767]-T[48784]-[Warn ]-ThrdCondTimedWait  : Normal, Time Out.
2024-04-08 10:40:44-P[48767]-T[48778]-[Warn ]-ThrdCondTimedWait  : Normal, Time Out.
2024-04-08 10:40:44-P[48767]-T[48782]-[Warn ]-ThrdCondTimedWait  : Normal, Time Out.Performance counter stats for './TestThreadPool':326      page-faults:u                                               1.086408058 seconds time elapsed1.263473000 seconds user0.862466000 seconds sys

 (3)总结

int类型数据,队列相较于线程池快70毫秒左右。

2、char[]类型

测试两百万数据,正确性上面验证过了这边就不展示了,字符串加长到了182字节。

(1)队列

[gbase@czg2 SqQueue]$ perf stat -e page-faults ./TestThreadQPerformance counter stats for './TestThreadQ':295      page-faults:u                                               2.788114327 seconds time elapsed1.812386000 seconds user3.664842000 seconds sys[gbase@czg2 SqQueue]$ perf stat -e page-faults ./TestThreadQPerformance counter stats for './TestThreadQ':284      page-faults:u                                               2.945201020 seconds time elapsed1.637381000 seconds user4.164555000 seconds sys[gbase@czg2 SqQueue]$ perf stat -e page-faults ./TestThreadQPerformance counter stats for './TestThreadQ':275      page-faults:u                                               2.908095580 seconds time elapsed1.893301000 seconds user3.811112000 seconds sys

(2)线程池

[gbase@czg2 MyPool]$ perf stat -e page-faults ./TestThreadPool
2024-04-08 15:03:00-P[54367]-T[54381]-[Warn ]-ThrdCondTimedWait  : Normal, Time Out.
2024-04-08 15:03:00-P[54367]-T[54378]-[Warn ]-ThrdCondTimedWait  : Normal, Time Out.
2024-04-08 15:03:00-P[54367]-T[54382]-[Warn ]-ThrdCondTimedWait  : Normal, Time Out.
2024-04-08 15:03:00-P[54367]-T[54383]-[Warn ]-ThrdCondTimedWait  : Normal, Time Out.
2024-04-08 15:03:00-P[54367]-T[54385]-[Warn ]-ThrdCondTimedWait  : Normal, Time Out.
2024-04-08 15:03:00-P[54367]-T[54387]-[Warn ]-ThrdCondTimedWait  : Normal, Time Out.
2024-04-08 15:03:00-P[54367]-T[54379]-[Warn ]-ThrdCondTimedWait  : Normal, Time Out.
2024-04-08 15:03:00-P[54367]-T[54380]-[Warn ]-ThrdCondTimedWait  : Normal, Time Out.
2024-04-08 15:03:00-P[54367]-T[54384]-[Warn ]-ThrdCondTimedWait  : Normal, Time Out.
2024-04-08 15:03:00-P[54367]-T[54386]-[Warn ]-ThrdCondTimedWait  : Normal, Time Out.Performance counter stats for './TestThreadPool':349      page-faults:u                                               1.197422931 seconds time elapsed1.396612000 seconds user0.937120000 seconds sys[gbase@czg2 MyPool]$ perf stat -e page-faults ./TestThreadPool
2024-04-08 15:03:02-P[54406]-T[54420]-[Warn ]-ThrdCondTimedWait  : Normal, Time Out.
2024-04-08 15:03:02-P[54406]-T[54424]-[Warn ]-ThrdCondTimedWait  : Normal, Time Out.
2024-04-08 15:03:02-P[54406]-T[54419]-[Warn ]-ThrdCondTimedWait  : Normal, Time Out.
2024-04-08 15:03:02-P[54406]-T[54418]-[Warn ]-ThrdCondTimedWait  : Normal, Time Out.
2024-04-08 15:03:02-P[54406]-T[54422]-[Warn ]-ThrdCondTimedWait  : Normal, Time Out.
2024-04-08 15:03:02-P[54406]-T[54423]-[Warn ]-ThrdCondTimedWait  : Normal, Time Out.
2024-04-08 15:03:02-P[54406]-T[54425]-[Warn ]-ThrdCondTimedWait  : Normal, Time Out.
2024-04-08 15:03:02-P[54406]-T[54426]-[Warn ]-ThrdCondTimedWait  : Normal, Time Out.
2024-04-08 15:03:02-P[54406]-T[54421]-[Warn ]-ThrdCondTimedWait  : Normal, Time Out.
2024-04-08 15:03:02-P[54406]-T[54417]-[Warn ]-ThrdCondTimedWait  : Normal, Time Out.Performance counter stats for './TestThreadPool':385      page-faults:u                                               1.094630281 seconds time elapsed1.402972000 seconds user0.768006000 seconds sys[gbase@czg2 MyPool]$ perf stat -e page-faults ./TestThreadPool
2024-04-08 15:03:05-P[54436]-T[54450]-[Warn ]-ThrdCondTimedWait  : Normal, Time Out.
2024-04-08 15:03:05-P[54436]-T[54448]-[Warn ]-ThrdCondTimedWait  : Normal, Time Out.
2024-04-08 15:03:05-P[54436]-T[54452]-[Warn ]-ThrdCondTimedWait  : Normal, Time Out.
2024-04-08 15:03:05-P[54436]-T[54454]-[Warn ]-ThrdCondTimedWait  : Normal, Time Out.
2024-04-08 15:03:05-P[54436]-T[54455]-[Warn ]-ThrdCondTimedWait  : Normal, Time Out.
2024-04-08 15:03:05-P[54436]-T[54456]-[Warn ]-ThrdCondTimedWait  : Normal, Time Out.
2024-04-08 15:03:05-P[54436]-T[54453]-[Warn ]-ThrdCondTimedWait  : Normal, Time Out.
2024-04-08 15:03:05-P[54436]-T[54447]-[Warn ]-ThrdCondTimedWait  : Normal, Time Out.
2024-04-08 15:03:05-P[54436]-T[54449]-[Warn ]-ThrdCondTimedWait  : Normal, Time Out.
2024-04-08 15:03:05-P[54436]-T[54451]-[Warn ]-ThrdCondTimedWait  : Normal, Time Out.Performance counter stats for './TestThreadPool':373      page-faults:u                                               1.133650984 seconds time elapsed1.462385000 seconds user0.747731000 seconds sys

 (3)总结

char[]类型数据,字符串长度在182字节,队列相较于线程池慢1.8秒左右。如果把数据长度和并发数据加大,这个差距更大,说明拷贝指针的方法效率更高。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/816087.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深度学习学习日记4.14 数据增强 Unet网络部分

数据增强 transforms.Compose([&#xff1a;这表示创建一个转换组合&#xff0c;将多个数据转换操作串联在一起 transforms.RandomHorizontalFlip()&#xff1a;这个操作是随机水平翻转图像&#xff0c;以增加数据的多样性。它以一定的概率随机地水平翻转输入的图像。 transfo…

29、链表-删除链表的倒数第N个结点

思路: 首先找到倒数第N个结点 第一种方式 先统计链表的节点数&#xff0c;然后再次遍历len-N即可得到倒数第N个结点&#xff0c;然后将前一个节点的next指针指向next的下一个节点使用快慢指针&#xff0c;快指针先跑N个结点然后慢指针开始跑&#xff0c;等快指针到达尾节点后…

多因子模型的因子选取

经典的Alpha模型是一些多因子模型&#xff0c;用于预测Alpha模型的信息比率&#xff0c;从而来判断判断模型的好坏。这里我们所说的信息比率是相对收益率除以非系统性风险&#xff0c;所以当我们在进行因子选择的时候&#xff0c;我们一定不能选取系统性风险模型&#xff08;例…

免费VPS云服务器汇总,最长永久免费使用

目前云服务器市场竞争很激烈&#xff0c;为了方便吸引上云&#xff0c;很多云计算服务商提供免费试用云服务器&#xff0c;下面给大家整理汇总一下免费VPS云服务器&#xff0c;最长永久免费使用&#xff01; 一、雨云&#xff08;优惠码:ABC&#xff09; 活动地址&#xff1a;…

2D AI交互数字人:赋能文旅、金融、政务、教育行业数字化转型

AI交互数字人结合了语音合成、语音识别、语义理解、图像处理、机器翻译、虚拟形象驱动等多项AI核心技术&#xff0c;可以提供服务导览、业务咨询、语音互动交流、信息播报等智能服务。 其中&#xff0c;2D AI交互数字人是采集真人视频&#xff0c;通过AI训练&#xff0c;生成逼…

认识OpenEuler操作系统

引言 在信息技术日新月异的时代&#xff0c;开源软件已成驱动创新的核心动能&#xff0c;其中&#xff0c;OpenEuler作为一款冉冉升起的开源操作系统典范&#xff0c;凭借其对开源精神的坚守与技术创新的不懈追求&#xff0c;自亮相以来便引发了全球关注。本文将全方位深挖Open…

Xcode 15.0 新 #Preview 预览让 SwiftUI 界面调试更加悠然自得

概览 从 Xcode 15 开始&#xff0c;苹果推出了新的 #Preview 宏预览机制&#xff0c;它无论从语法还是灵活性上都远远超过之前的预览方式。#Preview 不但可以实时预览 SwiftUI 视图&#xff0c;而且对 UIKit 的界面预览也是信手拈来。 想学习新 #Preview 预览的一些超实用调试…

使用新一代一站式 AI Bot 开发平台扣子coze,搭建我的第一个AI Bot(前端魔法师) ,

目录 1.概述​ 2.功能与优势 3.使用扣子 4.人设与回复逻辑 5.添加插件 6.预览与调试 7.发布bot Store 8.环境大家体验&#xff08;给大家内置了比较屌的插件&#xff09; 9.推荐阅读&#xff1a; 1.概述​ 扣子是新一代一站式 AI Bot 开发平台。无论你是否有编程基础…

iOS------SDWebImage源码

一&#xff0c;简介 一个异步图片下载及缓存的库 特性&#xff1a; 一个扩展UIImageView分类的库&#xff0c;支持加载网络图片并缓存图片异步图片下载器异步图片缓存和自动图片有效期限管理支持GIF动态图片支持WebP背景图片减压保证同一个URL不会再次下载保证无效的URL不会…

Web前端 Javascript笔记3

1、垃圾回收机制 内存中的生命周期 1、内存分配 2、内存使用&#xff08;读写&#xff09; 3、内存回收&#xff0c;使用完毕之后&#xff0c;垃圾回收器完成 内存泄漏&#xff1a;该回收的&#xff0c;由于某些未知因素&#xff0c;未释放&#xff0c;叫做内存泄漏 栈&#xf…

Vue新手入门

1 Vue概述 官网:https://cn.vuejs.org/ 1、什么是Vue.js Vue.js 是目前最火的一个前端框架&#xff0c;React是最流行的一个前端框架&#xff08;React除了开发网站&#xff0c;还可以开发手机App&#xff0c; Vue语法也是可以用于进行手机App开发的&#xff0c;需要借助于W…

Bridge 桥接

意图 将抽象部分与其显示部分分离&#xff0c;使他们都可以独立地变化。 结构 其中&#xff1a; Abstraction定义抽象类的接口&#xff0c;维护一个指向Implementer类型对象的指针。RefinedAbstraction扩展由Abstraction定义的接口。Implementor定义实现类的接口&#xff0c…

React 19 的新增功能:Action Hooks

React 是前端开发领域最流行的框架之一。我喜欢 React 是因为它背后的团队和社区对它的热情。当社区提出新功能和改进的需求时&#xff0c;团队会倾听&#xff0c;React 的未来是令人兴奋和有趣的。 让我们来看一下 React 19 中令开发人员提升开发效率的新特性。对于每个钩子&…

关于项目打包

除了自己常用的那种方式&#xff0c;也可以直接在文件夹下执行命令。 如果当前项目聚合了其他子模块的话&#xff1a; 先清理&#xff0c;再打包&#xff0c;同时跳过测试 如果打包后&#xff0c;然后项执行某个模块&#xff0c;进入当前文件夹下直接java -jar 和jar包名执行就…

k8s:kubectl 命令设置简写启用自动补全功能

k8s&#xff1a;kubectl 命令设置简写&启用自动补全功能 1、设置kubectl命令简写2、启用kubectl自动补全功能 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&#x1f496; Kubernetes&#xff08;K8s&#xff09;是一个强大的容器编排平台&#xff0…

恢复MySQL!是我的条件反射,PXB开源的力量...

&#x1f4e2;&#x1f4e2;&#x1f4e2;&#x1f4e3;&#x1f4e3;&#x1f4e3; 哈喽&#xff01;大家好&#xff0c;我是【IT邦德】&#xff0c;江湖人称jeames007&#xff0c;10余年DBA及大数据工作经验 一位上进心十足的【大数据领域博主】&#xff01;&#x1f61c;&am…

力扣面试150 分发糖果 分步贪心

Problem: 135. 分发糖果 思路 &#x1f468;‍&#x1f3eb; 参考&#xff1a;代码随想录 一次是从左到右遍历&#xff0c;只比较右边孩子评分比左边大的情况。一次是从右到左遍历&#xff0c;只比较左边孩子评分比右边大的情况。 复杂度 时间复杂度: O ( n ) O(n) O(n) …

低成本,高效能:探索物联网新宠LoRa

LoRa是什么&#xff1f; LoRa是一种物联网无线传输技术&#xff0c;利用调制解调器实现低功耗远距离数据传输。其基本工作原理是通过基站发送数据到特定终端设备&#xff0c;实现双向数据传输。 LoRa无线传输技术是一种为低功耗和低成本设计的无线技术&#xff0c;用于实现远距…

【Linux】CentOS 7安装后没有图形界面

专栏文章索引&#xff1a;Linux 有问题可私聊&#xff1a;QQ&#xff1a;3375119339 目录 一、项目场景 二、问题描述 三、原因分析 四、解决方案 1.当前处于命令行界面&#xff0c;可以切换为图形界面 2.安装时没有安装图形界面&#xff0c;选择了Minimal Install 3.下…

鸿蒙端云一体化开发--开发云函数--适合小白体制

开发云函数 那什么是云函数&#xff1f;我们将来又怎么去使用这个云函数呢&#xff1f; 答&#xff1a;我们之前要编写一些服务端的业务逻辑代码&#xff0c;那现在&#xff0c;在这种端云一体化的开发模式下&#xff0c;我们是把服务端的业务逻辑代码&#xff0c;通过云函数来…