[so] Coada non-blocanta

Stanciu Alexandru the_marian_2006 at yahoo.com
Tue Apr 3 15:55:19 EEST 2012


Vreau sa fac si eu o coada non-blocanta, astfel incat, cand fac un receive sa nu se blocheze executia ci sa sara mai departe pana cand primeste ceva. Am facut asa:

message_t *buf = (message_t*) calloc (1, sizeof(message_t));
    
    mqd_t q;
    
    struct mq_attr attr;
    attr.mq_flags = O_NONBLOCK;
    attr.mq_maxmsg = 10;
    attr.mq_msgsize = sizeof(message_t);
    attr.mq_curmsgs = 0;
    
    q = mq_open("/gateway", O_CREAT | O_RDWR, 0644, &attr);
    
    while(1)
    {
    rc = mq_receive(q, (char *)buf, sizeof(message_t), NULL);

In while, daca rc != -1 afisez datele din mesaj altfel un mesaj oarecare. Problema este ca coada se blocheaza. Poate sa-mi zici si mie cineva de ce coada mea este blocanta totusi? Afisam mesaj imediat dupa receive si nu ajungea acolo.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://cursuri.cs.pub.ro/pipermail/so/attachments/20120403/d48fc45b/attachment.htm>


More information about the so mailing list