gpt4 book ai didi

c++ - 为什么在 Solaris 10 中,timer_create 会抛出 SIGEV_THREAD 错误?

转载 作者:行者123 更新时间:2023-11-30 16:37:24 27 4
gpt4 key购买 nike

我写了一段代码,使用timer_create设置计时器来调用一个线程,在该线程中我将sigev_notify设置为SIGEV_THREAD,它给了我错误EINVAL(无效参数),但是当我将sigev_notify设置为SIGEV_SIGNAL时,代码工作正常。

我的这段代码在所有操作系统中都可以工作,即使在Solaris 11中也是如此,但对于solaris 10却出现错误。

代码如下:

{
int status =0;
struct itimerspec ts;
struct sigevent se;

se.sigev_notify = SIGEV_THREAD;
se.sigev_value.sival_int = val;
se.sigev_notify_function = func;
se.sigev_notify_attributes = NULL;

status = timer_create(CLOCK_REALTIME, &se, timer_id);

ts.it_value.tv_sec = abs(delay);
ts.it_value.tv_nsec = (delay-abs(delay)) * 1e09;
ts.it_interval.tv_sec = abs(interval);
ts.it_interval.tv_nsec = (interval-abs(interval)) * 1e09;

status = timer_settime(*timer_id, 0, &ts, 0);

}

请帮我解决这个问题。

提前致谢...

最佳答案

根据this man-page Solaris 10 不知道 SIGEV_THREAD,但只知道

The sigev_notify member specifies the notification mechanism to use when an asynchronous event occurs. The sigev_notify member may be defined with the following values:

SIGEV_NONE

No asynchronous notification is delivered when the event of interest occurs.

SIGEV_SIGNAL

A queued signal, with its value application-defined, is generated when the event of interest occurs.

SIGEV_PORT

An asynchronous notification is delivered to an event port when the event of interest occurs. The sival_ptr member points to a port_notify_t structure (see port_associate(3C)). The event port identifier as well as an application-defined cookie are part of the port_notify_t structure

关于c++ - 为什么在 Solaris 10 中,timer_create 会抛出 SIGEV_THREAD 错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47941299/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com