#include <stdio.h>
#include <string.h>
#include <fcntl.h>
#include <unistd.h>
#include <time.h>
#include <stdlib.h>
#include <pthread.h>
#include <errno.h>
void printf_thread_info()
{
pthread_attr_t gattr;
int s = pthread_getattr_np(pthread_self(), &gattr);
if (s != 0)
{
printf("printf_thread_info %x pthread_getattr_np error\n", pthread_self());
return;
}
int i;
s = pthread_attr_getdetachstate(&gattr, &i);
if (s != 0)
{
printf("printf_thread_info %x pthread_attr_getdetachstate error\n", pthread_self());
return;
}
printf("printf_thread_info %x pthread_attr_getdetachstate %d\n", pthread_self(),i);
}
void* test_fun(void* fd)
{
printf("test_fun exit\n");
exit(0);
printf_thread_info();
char char_recv[1024 * 2];//´æ·ÅÊý¾Ý
memset(char_recv, 0, sizeof(char_recv));
sleep(5);
printf("leave test_fun\n");
}
void create_test_thread()
{
int i;
scanf("%d", &i);
pthread_t thread;
if (pthread_create(&thread, NULL, test_fun, NULL) != 0)//´´½¨×ÓÏß³Ì
{
perror("pthread_create check_inite_rknn_stuck");
}
else {
//int k = pthread_detach(thread);
}
sleep(2);
pthread_create(&thread, NULL, test_fun, NULL);
printf("create_test_thread %d \n", thread);
int res = pthread_join(thread, NULL);
if (res != 0) {
if (res == EINVAL) {
printf("not support join\n");
}
}
}
class T
{
public:
T()
{
};
~T()
{
printf("exit T1\n");
sleep(10);
printf("exit T2\n");
}
};
T gt;
int main()
{
while (true)
{
create_test_thread();
}
return 0;
}
//while true; do pmap -x $(pidof test_mem.bin) > test1; sleep 2; pmap -x $(pidof test_mem.bin) > test2;echo xxxxxxxxxxx;diff test1 test2;sleep 1; done
/*
while true; do pmap -x $(pidof sh.bin) > test1; echo xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx; diff test2 test1; sleep 1; pmap -x $(pidof sh.bin) > test2; echo xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx; diff test1 test2; sleep 1; done
*/
/*
while true; do pmap -x 42971 > test1; echo xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx; diff test2 test1; sleep 1; pmap -x 42971 > test2; echo xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx; diff test1 test2; sleep 1; done
*/