C поток аргумент - PullRequest
       14

C поток аргумент

0 голосов
/ 29 апреля 2011

Основная функция моей программы: создание количества счетчиков (0), создание количества инструкций на потоки, создание инструкций struct, которые содержат счетчик *, повторений и work_fn (увеличение, уменьшение и т. Д.). Программа построит всю динамическую структуру (уже закодирована) затем порождайте темы и присоединяйтесь. Одна нить может иметь более одной инструкции.

static void* worker_thread(void *arg){
  long long *n;
  pthread_mutex_lock( &lock1 );

  n = (long long *) arg;
  printf("Testing: %lld.\n", n);

  pthread_mutex_unlock( &lock1 );

  return NULL;
}

//nthreads is the total number of threads

for(int i=0; i < nthreads ; i++){
  pthread_create( &thread_id[i], NULL, worker_thread, &i); //Problem
}


for(int i=0; i < nthreads ; i++){
  pthread_join( thread_id[i], NULL);
}

Я пытаюсь протестировать функцию потока, сначала создать количество потоков, а затем присоединиться к ним. Но я не могу передать текущий номер потока [i] в ​​моем случае функции рабочего потока.

Ответы [ 2 ]

2 голосов
/ 29 апреля 2011

Использование

(void *) i

в pthread_create

, а затем

int i = (int) arg
1 голос
/ 29 апреля 2011
int n = (int)arg;

В вашей функции worker_thread.

И

(void*)i

Вместо &i в вашем потоке spawn

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...