Как установить имя потока в Linux pthreads?

создайте новую таблицу, которую вы хотите, с правильными типами столбцов и индексами. (скрипт из старой таблицы и изменение имени.)

вставить в новую таблицу (список столбцов) выберите * из old_table;

переименуйте old_table old_table_back, переименуйте new_table old_table.

создайте старые индексы в новой таблице, оставьте любые ограничения ri на старой таблице и создайте их в новой таблице. Опять же, ваши rdbms будут иметь простой способ генерации скриптов для этого.

56
задан Ciro Santilli 新疆改造中心996ICU六四事件 25 July 2018 в 10:43
поделиться

2 ответа

Используйте функцию prctl(2) с опцией PR_SET_NAME (см. документацию).

Обратите внимание, что документация немного запутана. Они говорят

Установить имя процесса для вызывающего процесса

но поскольку в Linux потоки - это легковесные процессы (LWP), один поток - это один процесс в данном случае.

Вы можете увидеть имя потока с помощью ps -o cmd или с помощью:

cat /proc/$PID/task/$TID/comm

или между () из cat /proc/$PID/task/$TID/stat:

4223 (kjournald) S 1 1 1 0...

или из GDB info threads между двойными кавычками:

* 1    Thread 0x7ffff7fc7700 (LWP 6575) "kjournald" 0x00007ffff78bc30d in nanosleep () at ../sysdeps/unix/syscall-template.S:84                                                                                  
31
ответ дан 24 November 2019 в 19:25
поделиться

Вы можете реализовать это самостоятельно, создав сопоставление словаря pthread_t в std :: string , а затем связав результат ] pthread_self () с именем, которое вы хотите присвоить текущему потоку. Обратите внимание: если вы это сделаете, вам нужно будет использовать мьютекс или другой примитив синхронизации, чтобы предотвратить одновременное изменение словаря несколькими потоками (если ваша реализация словаря уже не делает это за вас). Вы также можете использовать переменные, зависящие от потока (см. pthread_key_create , pthread_setspecific , pthread_getspecific и pthread_key_delete , чтобы сохранить имя)). текущий поток; однако вы не сможете получить доступ к именам других потоков, если сделаете это (тогда как со словарем вы можете перебирать все пары идентификаторов / имен потоков из любого потока).

6
ответ дан 24 November 2019 в 19:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: