Files
23Mar25_PrintLOG/program/main.c
2025-08-04 17:04:56 +08:00

82 lines
2.3 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
* @Author: Lucius
* @Date: 2023-03-25 14:05:20
* @LastEditTime: 2023-03-27 17:18:47
* @LastEditors: Lucius
* @Description:
* @FilePath: /23Mar25_PrintLOG/program/main.c
*/
#include <stdio.h>
#include <unistd.h>
#include <pthread.h>
#include <string.h>
#include "printlog.h"
void thread_func(void *arg)
{
char *str = (char *)arg;
PrintDebug(dDebugFlag_main, "Child thread: I'm child thread, arg = %s", str);
// 子线程do something...
while (1)
{
PrintErr(dDebugFlag_main, "线程循环中。。。");
sleep(2);
PrintWarn(dDebugFlag_main, "线程循环中。。。");
sleep(2);
PrintInfo(dDebugFlag_main, "线程循环中。。。");
sleep(2);
PrintDebug(dDebugFlag_main, "线程循环中。。。");
sleep(2);
}
// 退出子线程
PrintDebug(dDebugFlag_main, "Child thread: I'll execute pthread_exit()");
pthread_exit(NULL);
/*此处不会再执行了*/
PrintDebug(dDebugFlag_main, "xxxxxxxxxxxxxxxxxxxxxxxxxx");
return;
}
int main(int argc, char **argv)
{
#if 1
SetDebugFlag(dDebugFlag_main);
#endif
if (argc > 1)
{
int value = 0;
SetLogTypesByParams((char *)argv[1]);
value = PRINT_PROCESS_MODE;
SetPrintParameter(PRINT_RUN_MODE, &value, sizeof(value));
SetprocessName("main");
}
pthread_t tid;
// 这个本身是一个进程,我是在同一进程中创建多个线程,
// 同时我们一般把主流程叫主线程
// PrintInfo("Main thread: I'll create some child threads.");
char *str = "Farsight thread demo";
pthread_create(&tid, NULL, (void *)thread_func, (void *)str);
// PrintInfo("Main thread: After created thread!");
while (1)
{
PrintErr(dDebugFlag_main, "进程循环中。。。");
sleep(1);
PrintWarn(dDebugFlag_main, "进程循环中。。。");
sleep(1);
PrintInfo(dDebugFlag_main, "进程循环中。。。");
sleep(1);
PrintDebug(dDebugFlag_main, "进程循环中。。。");
sleep(1);
}
PrintInfo(dDebugFlag_main, "Main thread: Before pthread_join()!");
pthread_join(tid, NULL); // 阻塞等待子线程退出回收子线程所占用内核中8KB物理内存避免子线程成为僵尸
PrintInfo(dDebugFlag_main, "Main thread: After pthread_join()!");
}