Odpowiedz na ten temat
Pokaż wyniki od 1 do 2 z 2
  1. Avatar macieks72

    Dołączył
    Aug 2009
    Postów
    9,327

    Cytuj | #1

    Mam taki przykład, nie wiem czemu raz się ten blok wykonuje i dostaję ładny napis z printf() tak jak chce, a następnym razem nie, przy czym nie ma reguły, raz zadziała parę razy po kolei, a innym razem mogę uruchamiać kilka razy i nic. Ale jak zmienię z "dispatch_async" na "dispatch_sync" to wszystko jest dobrze, tylko że chciałem właśnie z async.

    Kod:
    dispatch_queue_t myQueue = dispatch_queue_create("myqueue", 0);
    
    dispatch_async(myQueue, ^{						
    	printf("this is a block!\n");
    });
    Komputer: Macbook Pro wykąpany w pepsi, teraz Acer Aspire 5750G
    Telefon: iPhone 4 - iOS 5.1.1
    Ludzie, używajcie alta. No chyba że wam obojętne, czy robicie komuś 'łaskę', czy 'laske'.


  2. Avatar macieks72

    Dołączył
    Aug 2009
    Postów
    9,327

    Cytuj | #2

    Jeszcze jedna ciekawa rzecz, to wyżej co pisałem to testowałem w Xcode i obj-c. Natomiast to samo w C ani razu mi się jeszcze nie wykonało, natomiast jak poprzednio po zmianie z async na sync działa.

    Dlaczego tak się z tym async dzieje?

    Kod:
    #include dispatch/dispatch.h
    
    void test1()
    {
    	dispatch_queue_t queue1 = dispatch_queue_create("queue1", 0);
    		
    	dispatch_async(queue1, ^{
    		printf("this is a block 1- test1!\n");
    	});
    }
    
    int main (int argc, char const *argv[])
    {
    	test1();
    	return 0;
    }
    Kompilowane z palca w terminalu.

    EDIT:
    Jeszcze coś ciekawego, jeśli kompiluje to jako C++ zamiast C, to tak samo jak w obj-c, raz się wykonuje a innym razem nie.

    O co z tym chodzi, ktoś wie?
    Ostatnio edytowane przez macieks72 ; 03.12.2010 o 14:40
    Komputer: Macbook Pro wykąpany w pepsi, teraz Acer Aspire 5750G
    Telefon: iPhone 4 - iOS 5.1.1
    Ludzie, używajcie alta. No chyba że wam obojętne, czy robicie komuś 'łaskę', czy 'laske'.

Odpowiedz na ten temat