Форум русскоязычного сообщества Ubuntu


Получить помощь и пообщаться с другими пользователями Ubuntu можно
на irc канале #ubuntu-ru в сети Freenode
и в Jabber конференции ubuntu@conference.jabber.ru

Автор Тема: Thread ID отрицательный - это нормально?  (Прочитано 859 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Ashbe

  • Автор темы
  • Новичок
  • *
  • Сообщений: 19
  • Дружба хороша при жизни.
    • Просмотр профиля
Начал тут программировать. Код примерно такой.

#include <pthread.h>
#include <stdio.h>
#include <errno.h>
#include <stdlib.h>
#include <inttypes.h>

#define TCNT 10

void* test(void* in)
{
  printf("pid %d  tid %ld\n", getpid(), pthread_self());
  return;
};

int main(int argc, char **argv, char **envp)
{
  pthread_t tid[TCNT];
  int i, status;

  for (i=0; i<TCNT; i++)
  {
    status = pthread_create(&tid, NULL, test, NULL);
    if (status !=0)
    {
      printf("%d\n", status );
      err(EXIT_FAILURE, "pthread_create()");
    }
    usleep(100000);
  };
  return(EXIT_SUCCESS);
};

Выводит в таком виде:
pid 20925  tid -1219044544
pid 20925  tid -1227437248
pid 20925  tid -1235829952

А в книжках не так :) У меня Мэйт, но какая разница.

Оффлайн Peter_I

  • Старожил
  • *
  • Сообщений: 3079
    • Просмотр профиля
Re: Thread ID отрицательный - это нормально?
« Ответ #1 : 18 Декабря 2015, 00:01:40 »
Он не отрицательный, это вы его неправильно выводите.
Пётр.

Оффлайн Ashbe

  • Автор темы
  • Новичок
  • *
  • Сообщений: 19
  • Дружба хороша при жизни.
    • Просмотр профиля
Re: Thread ID отрицательный - это нормально?
« Ответ #2 : 18 Декабря 2015, 00:45:35 »
Ну я же привёл код. Что именно неправильно?

Пользователь решил продолжить мысль 18 Декабря 2015, 01:25:34:
Мда. Заменил %ld на %lu, стало выглядеть правдоподобно. Но этот код был из книги взят, правда она по QNX, но какая разница.
Спасибо, тема закрыта.
« Последнее редактирование: 18 Декабря 2015, 01:25:34 от Ashbe »

Оффлайн RiseOfDeath

  • Любитель
  • *
  • Сообщений: 59
    • Просмотр профиля
Re: Thread ID отрицательный - это нормально?
« Ответ #3 : 18 Декабря 2015, 10:51:51 »
printf("pid %u  tid %lu\n", getpid(), pthread_self());
Подробнее смотрите тут
« Последнее редактирование: 18 Декабря 2015, 10:53:36 от RiseOfDeath »

 

Страница сгенерирована за 0.047 секунд. Запросов: 25.