Использование pthreads с Dev-C ++ - странная ошибка - PullRequest
1 голос
/ 20 мая 2011

пытаясь понять pthreads и многопоточное программирование на языке C. Благодаря этому сайту мне удалось связать библиотеку, чтобы она больше не вызывала ошибок при компиляции.

Я пытаюсь запустить 2 потока: один, который печатает 1000000 x, и тот, который печатает 1000000 o.

Однако при запуске программы возникает проблема. Командная строка всплывает на миллисекунду, а затем умирает, кажется, ничего не происходит. Даже ошибки компиляции или что-то, что я могу исправить. Если я закомментирую операторы создания потоков и объединения потоков, появится командная строка и ожидает нажатия клавиши из-за системы («ПАУЗА»).

вот мой код:

#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
#include <time.h>
#include <pthread.h>

void* printChar(void *c);

int main(int argc, char *argv[])
{
    pthread_t thread1;
    pthread_t thread2;

    pthread_create(&thread1,NULL,printChar,"x");
    pthread_create(&thread2,NULL,printChar,"o");

    pthread_join(thread1,NULL);


  system("PAUSE");  
  return 0;
}

void* printChar(void *c)
{
      char *str;
      str = (char*)c;
      int i;
      for(i = 0; i < 1000000; i++)
      {
              printf("%c",str);
      }
}

Я использую DOS C-приложение из Bloodshed Dev-C ++ IDE. Моя версия файлов pthread .dll и .a: libpthreadGC2.a и pthreadGC2.dll

Если вам нужны какие-либо другие характеристики, Лемми знает

спасибо заранее!

1 Ответ

2 голосов
/ 21 мая 2011

Посмотрите на ваш printf: формат «% c» ожидает тип «int», но аргумент 2 имеет тип «char *». Так что должно быть printf ("% s", str);

...