pthreads

    0熱度

    1回答

    我有一個Linux的C應用程序中的pthread庫的問題。 在我的應用程序中,線程一遍又一遍地重新啓動。 但我總是等到線程完成之後再啓動它。 在某些時候,線程不會再啓動,並且出現內存不足錯誤。 我發現的解決方案是在線程完成後執行pthread_join。 誰能告訴我爲什麼線程不能正確結束? 以下是導致相同問題的示例代碼。 如果在pthread_join不叫進程停在約380調用Thread的: #i

    -1熱度

    2回答

    我有一個c程序在啓動時創建一個線程。線程的目的是在指示時將固件刷新到設備。所以當線程啓動的時候它等待一個信號量和一個點,主應用程序將sem_post(&semaphore);發佈到線程中的信號量,線程將完成它的任務。 有時候這個任務可能會失敗(如果有硬件問題)。我的問題是我可以從線程返回一個值到信號量發佈到主應用程序的位置嗎?固件閃爍通過system()完成,結果返回到int變量res。我想把這個

    0熱度

    2回答

    我基本上是問我是否在一個方法中獲得一個鎖並從該方法中調用第二個方法,第二個方法是否會保持獨佔內存訪問? 這是一些示例代碼。作爲參考,我使用pthreads編碼。 int count = 0; pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER; method1() { pthread_mutex_lock(&mutex);

    0熱度

    1回答

    我寫了我的第一個多線程程序,並且大部分程序都能正常工作。共享緩衝區數組最初填充爲-1,指示生產者其空並需要被填充。然後生產者用隨機值1 - 10填充共享緩衝區,生產者輪流填充緩衝區。生產者然後向消費者發出信號,告知消費者它已經填充了緩衝區的一個元素並消耗它。生產者需要填寫120個元素,每個消費者都應該填寫。該程序工作完全正常,直到它到達項目110.它然後凍結,我不知道爲什麼。我該如何解決? 這是輸

    0熱度

    1回答

    從多處理器編程的藝術, 1 #include <pthread.h> 2 #define QSIZE 16 3 typedef struct { 4 int buf[QSIZE]; 5 long head, tail; 6 pthread_mutex_t *mutex; 7 pthread_cond_t *notFull, *notEmpty; 8 } queue; 9 v

    0熱度

    1回答

    Android Studio NDK項目由CMake構建,當我使用pthread_create方法時,IDE向我顯示錯誤「參數太多,預期爲1」。 1.IDE代碼完成顯示「pthread_create(void *)」,但它不能通過編譯; 2.I搜索它pthreads.h中 int pthread_create(pthread_t* _Nonnull, pthread_attr_t const*,

    0熱度

    2回答

    我試圖遵循幾個答案/ tuturials的程序,並且我仍然在將多個參數傳遞給線程時出現分段錯誤?我究竟做錯了什麼? 結構: struct client_struct { int socketId; char *message; }; 處理功能: // Handle socket session void *process(void *client) { cl

    0熱度

    1回答

    所以pthread_cond_wait()的想法是,它會解鎖互斥,等待條件。 允許假設你將手動首先解鎖互斥體,然後等待一個條件。在這段時間內,在這兩個操作之間,你必須假定可能發生不好的事情,另一個線程會鎖定互斥鎖,這不好。如果你先等待然後解鎖,那也是一樣,這是不可能的。 所以,在這裏我的問題是: 如何pthread_cond_wait()實際工作? 的線程調用的函數,並傳遞一個鎖定的互斥和ther

    0熱度

    1回答

    我有三個整數(A,B和C),我想創建兩個線程(POSIX 的pthreads)來訪問他們在這個特定的順序,以保持結果一致: Thread 1 | Thread 2 --------------------- a=1 b=5 c=7 c=c+10 b=a+c*2 a=b+b*10 那是,thread2中的c = c + 10必須等到thread1中的c =

    0熱度

    1回答

    某些庫可能會使用pthread_atfork()註冊一些處理程序。我不需要它們,因爲我只使用fork()和exec()。而且,在某些情況下它們可能會造成麻煩。那麼,有沒有辦法重置註冊的處理程序列表? 相關:calling fork() without the atfork handlers,fork() async signal safety。