97 lines
1.7 KiB
C++
97 lines
1.7 KiB
C++
#include <errno.h>
|
|
#include <iostream>
|
|
#include <string>
|
|
#include <fcntl.h>
|
|
#include "FixedQueue.h"
|
|
|
|
using namespace std;
|
|
|
|
void *_entry_func(void *arg)
|
|
{
|
|
CFixedQueue *q = (CFixedQueue*)arg;
|
|
for (int i = 0; i < 50; ++i)
|
|
{
|
|
|
|
char p[1204] = {0};
|
|
sprintf(p, "########## %i", i);
|
|
int r = q->Push(p, strlen(p));
|
|
cout << "Tread Push : " << p << "," << r << endl;
|
|
sleep(1);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
void *_entry_func2(void *arg)
|
|
{
|
|
CFixedQueue *q = (CFixedQueue*)arg;
|
|
for (int i = 0; i < 30; ++i)
|
|
{
|
|
char p[1204] = {0};
|
|
int r = q->Pop(p, sizeof(p));
|
|
cout << "Tread Pop(1) : " << p << "," << r << endl;
|
|
sleep(4);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
void *_entry_func3(void *arg)
|
|
{
|
|
CFixedQueue *q = (CFixedQueue*)arg;
|
|
for (int i = 0; i < 20; ++i)
|
|
{
|
|
char p[1204] = {0};
|
|
int r = q->Pop(p, sizeof(p));
|
|
cout << "Tread Pop(2) : " << p << "," << r << endl;
|
|
sleep(2);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
int main ( int argc, char * argv[] )
|
|
{
|
|
CFixedQueue q(2048, 50);
|
|
|
|
char * p = "12345";
|
|
|
|
q.Push(p, strlen(p));
|
|
|
|
char temp[1204] = {0};
|
|
q.Pop(temp, sizeof(temp));
|
|
|
|
cout << "#### "<< temp << endl;
|
|
|
|
pthread_t workerthread = 0;
|
|
|
|
// start thread
|
|
int ret = pthread_create(&workerthread, 0, _entry_func, (void*)&q);
|
|
if (ret != 0)
|
|
{
|
|
cerr << "Client Thread create failed.[" << errno << "]";
|
|
return EXIT_FAILURE;
|
|
}
|
|
|
|
|
|
ret = pthread_create(&workerthread, 0, _entry_func2, (void*)&q);
|
|
if (ret != 0)
|
|
{
|
|
cerr << "Client Thread create2 failed.[" << errno << "]";
|
|
return EXIT_FAILURE;
|
|
}
|
|
|
|
cout << "############### " << endl;
|
|
|
|
ret = pthread_create(&workerthread, 0, _entry_func3, (void*)&q);
|
|
if (ret != 0)
|
|
{
|
|
cerr << "Client Thread create2 failed.[" << errno << "]";
|
|
return EXIT_FAILURE;
|
|
}
|
|
// ±×³É ½Ã±×³Î ´ë±â
|
|
pause();
|
|
|
|
return EXIT_SUCCESS;
|
|
}
|