parent
16f9e9c0b4
commit
ee517ad053
@ -0,0 +1,20 @@
|
||||
cpp_src = $(wildcard *.cpp)
|
||||
|
||||
cpp_obj = $(cpp_src:.cpp=.o)
|
||||
c_obj = $(c_src:.c=.o)
|
||||
CC = g++
|
||||
CFLAGS = -Wall -pedantic
|
||||
LDFLAGS =
|
||||
EXEC = runtest
|
||||
|
||||
|
||||
all : $(EXEC)
|
||||
|
||||
$(EXEC): $(cpp_obj) $(c_obj)
|
||||
$(CC) -pthread -o $@ $^ $(LDFLAGS)
|
||||
|
||||
clean:
|
||||
rm -rf $(c_obj) $(cpp_obj) $(EXEC)
|
||||
|
||||
cleanall:
|
||||
rm -rf $(c_obj) $(cpp_obj) $(EXEC)
|
@ -0,0 +1,33 @@
|
||||
#include "logger.hpp"
|
||||
|
||||
Logger::Logger()
|
||||
{
|
||||
if(pthread_create(&thread_handle,
|
||||
NULL,
|
||||
_static_run,
|
||||
this) != 0) {
|
||||
std::cout << "failed to ctrate logger tast!" <<std::endl;
|
||||
exit(-1);
|
||||
}
|
||||
}
|
||||
|
||||
pthread_t Logger::get_thread_handle()
|
||||
{
|
||||
return thread_handle;
|
||||
}
|
||||
|
||||
|
||||
void Logger::_run()
|
||||
{
|
||||
while(1) {
|
||||
usleep(10000);
|
||||
}
|
||||
}
|
||||
|
||||
void Logger::_static_run(void* arg)
|
||||
{
|
||||
reinterpret_cast<Logger*>(arg)->_run();
|
||||
}
|
||||
|
||||
|
||||
|
@ -0,0 +1,22 @@
|
||||
#ifndef _LOGGER_HPP_
|
||||
#define _LOGGER_HPP_
|
||||
|
||||
#include <iostream>
|
||||
#include <unistd.h>
|
||||
#include <pthread.h>
|
||||
|
||||
class Logger
|
||||
{
|
||||
public:
|
||||
Logger();
|
||||
|
||||
pthread_t get_thread_handle();
|
||||
|
||||
private:
|
||||
pthread_t thread_handle;
|
||||
|
||||
void _run();
|
||||
static void _static_run(void* arg);
|
||||
};
|
||||
|
||||
#endif // LOGGER_HPP__
|
@ -0,0 +1,70 @@
|
||||
#include <stdint.h>
|
||||
#include <unistd.h>
|
||||
#include <iostream>
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <pthread.h>
|
||||
#include <cstdlib>
|
||||
#include "logger.hpp"
|
||||
|
||||
static void* task_1(void* arg)
|
||||
{
|
||||
int i = 0;
|
||||
|
||||
//for(i = 0; i < 10; i++) {
|
||||
while(1) {
|
||||
std::cout << "Hello, world!" << std::endl;
|
||||
usleep(1000000);
|
||||
}
|
||||
|
||||
|
||||
while(1) usleep(10000);
|
||||
};
|
||||
|
||||
static void* task_2(void* arg)
|
||||
{
|
||||
while(1)
|
||||
{
|
||||
std::cout << "Task 2"<< std::endl;
|
||||
usleep(10000000);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
int main(void)
|
||||
{
|
||||
pthread_t th_task_1;
|
||||
pthread_t th_task_2;
|
||||
|
||||
int check = 0;
|
||||
|
||||
|
||||
Logger logger;
|
||||
|
||||
check = pthread_create(&th_task_1,
|
||||
NULL,
|
||||
&task_1,
|
||||
NULL);
|
||||
if(check != 0) {
|
||||
std::cout << "Failed to create thread!" << std::endl;
|
||||
exit(-1);
|
||||
}
|
||||
|
||||
|
||||
check = pthread_create(&th_task_2,
|
||||
NULL,
|
||||
&task_2,
|
||||
NULL);
|
||||
if(check != 0) {
|
||||
std::cout << "Failed to create thread!" << std::endl;
|
||||
exit(-1);
|
||||
}
|
||||
|
||||
pthread_join(th_task_1,NULL);
|
||||
pthread_join(th_task_2,NULL);
|
||||
pthread_join(logger.get_handle());
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in new issue