Глядя на ваш печатный вывод «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;
}
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
, но это - суть того, как она обычно используется.
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.