just a student
just a student

Reputation: 25

C + + cannot find the thread it created on ubuntu 18

I write a simple c++ code. In my code, I create two threads, then I name the two threads TCPCall30003Proc and TCPCall30004Proc, but I can not find them using top command with option -H. My os is ubuntu 18.

#include <pthread.h>
#include <thread>
#include <stdio.h>
#include <time.h>
#include <iostream>
#include <stdlib.h>
#include <chrono>
#include <unistd.h>

void f1(int num)
{
    printf("1\n");
    while(1)
    {
        sleep(1);
    }
}

void f2(int num)
{
    printf("2\n");
    while(1)
    {
        sleep(1);
    }
}
int main(int argc, char **argv)
{
    std::thread thd_1 = std::thread(f1, 1);
    std::thread thd_2 = std::thread(f2, 1);

    pthread_setname_np(thd_1.native_handle(), "TCPCall30003Proc");
    pthread_setname_np(thd_2.native_handle(), "TCPCall30004Proc");

    while(1)
    {
        sleep(1);
    }
    return 0;
}

Upvotes: 0

Views: 91

Answers (1)

Some programmer dude
Some programmer dude

Reputation: 409356

From the pthread_setname_np manual page:

The thread name is a meaningful C language string, whose length is restricted to 16 characters, including the terminating null byte ('\0').

[Emphasis mine]

You names are 17 characters, including the null-terminator.

If you check what pthread_setname_np returns it should return -1 and with errno set to ERANGE.

You need to shorten your names.

Upvotes: 3

Related Questions