initial commit
This commit is contained in:
67
common/workqueue/workqueue.c
Executable file
67
common/workqueue/workqueue.c
Executable file
@@ -0,0 +1,67 @@
|
||||
/*************************************************
|
||||
File name : workqueue.h
|
||||
Module :
|
||||
Author : amir
|
||||
Version : 0.1
|
||||
Created on : 2022-02-07
|
||||
Description :
|
||||
Data structure and function definitions required by the socket interface
|
||||
|
||||
Modify History:
|
||||
1. Date: Author: Modification:
|
||||
*************************************************/
|
||||
#include "threadpool.h"
|
||||
#include "workqueue.h"
|
||||
#include "hlog.h"
|
||||
|
||||
|
||||
workqueue *workqueue_init(uint32_t max_cnt){
|
||||
workqueue *wq = threadpool_create(max_cnt);
|
||||
assert(wq);
|
||||
return wq;
|
||||
}
|
||||
|
||||
void workqueue_deinit(workqueue *wq){
|
||||
if (wq){
|
||||
threadpool_dump(wq);
|
||||
threadpool_destroy(wq);
|
||||
}
|
||||
}
|
||||
|
||||
uint32_t workqueue_add(workqueue *wq, thread_routine routine, kpacket *packet){
|
||||
return threadpool_add(wq, routine, packet );
|
||||
}
|
||||
|
||||
static void *workqueue_test_handler(void *param){
|
||||
kpacket *packet = (kpacket *)param;
|
||||
hlogi("%s V:%u", __func__, *((int32_t *) packet->tlv.V));
|
||||
return NULL;
|
||||
};
|
||||
|
||||
void workqueue_test()
|
||||
{
|
||||
hlogi("%s start", __func__);
|
||||
workqueue *wq = workqueue_init(5);
|
||||
uint32_t i;
|
||||
for(i=0; i<1000000;i++){
|
||||
kpacket *packet = kpacket(1, 10);
|
||||
hlogi("%s i:%u packet:%p", __func__, i, packet);
|
||||
if (!packet){
|
||||
hloge("%s i:%u packet:%p", __func__, i, packet);
|
||||
hv_usleep(1000);
|
||||
continue;
|
||||
}
|
||||
*((int32_t *) packet->tlv.V) = i;
|
||||
workqueue_add(wq, workqueue_test_handler, packet);
|
||||
kpacket_dec(packet);
|
||||
}
|
||||
workqueue_deinit(wq);
|
||||
hlogi("%s stop", __func__);
|
||||
}
|
||||
|
||||
void workqueue_dump(workqueue *wq)
|
||||
{
|
||||
threadpool_dump(wq);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user