Портирование окон сброшенное руководством событие к Linux?

Глядя на ваш печатный вывод «HashmapDemo.MethodsForManagement@3d4eac69», кажется, что вы печатаете объект класса HashmapDemo.MethodsForManagement. Если вы хотите напечатать объект StudentCinstructor, вам нужно передать этот объект в метод печати, например System.out.println(student);.

И вам нужно переопределить метод toString() в классе StudentCinstructor. (т.е. поместите ниже код в классе StudentCinstructor.)

(name, marks и mobile_no в коде ниже - поля в классе StudentCinstructor.)

  @Override
  public String toString()
  {
    return "Name=" + name + ", Marks=" + marks + ", Mobile number=" + mobile_no;
  }
13
задан jww 9 June 2018 в 01:47
поделиться

2 ответа

Pthreads являются низкоуровневыми конструкциями. Нет, нет более простого механизма; pthread_cond__* концептуально подобно событию автосброса. Будьте осторожны, pthread_cond_wait может иметь побочные пробуждения, таким образом, это никогда не должно использоваться без своего рода внешнего флага независимо от ситуации.

Здание Ваше собственное не было бы слишком трудно, все же.

#include <pthread.h>
#include <stdbool.h>

struct mrevent {
    pthread_mutex_t mutex;
    pthread_cond_t cond;
    bool triggered;
};

void mrevent_init(struct mrevent *ev) {
    pthread_mutex_init(&ev->mutex, 0);
    pthread_cond_init(&ev->cond, 0);
    ev->triggered = false;
}

void mrevent_trigger(struct mrevent *ev) {
    pthread_mutex_lock(&ev->mutex);
    ev->triggered = true;
    pthread_cond_signal(&ev->cond);
    pthread_mutex_unlock(&ev->mutex);
}

void mrevent_reset(struct mrevent *ev) {
    pthread_mutex_lock(&ev->mutex);
    ev->triggered = false;
    pthread_mutex_unlock(&ev->mutex);
}

void mrevent_wait(struct mrevent *ev) {
     pthread_mutex_lock(&ev->mutex);
     while (!ev->triggered)
         pthread_cond_wait(&ev->cond, &ev->mutex);
     pthread_mutex_unlock(&ev->mutex);
}

Это не может соответствовать Вашему использованию, поскольку у Вас часто будет другая блокировка, вместо которой Вы хотели бы использовать ev->mutex, но это - суть того, как она обычно используется.

18
ответ дан 1 December 2019 в 19:15
поделиться

I think Windows Events are more akin to a semaphore. I.e. for auto-reset, you'd use a binary semaphore and the sem_timedwait() function.

2
ответ дан 1 December 2019 в 19:15
поделиться
Другие вопросы по тегам:

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