GIT.Harvie.CZ
/
mirrors
/
Programs.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fixed deadlock in pause enable/disable
[mirrors/Programs.git]
/
c
/
pthread_extra
/
test_pause.c
diff --git
a/c/pthread_extra/test_pause.c
b/c/pthread_extra/test_pause.c
index b99c388c735cc3ac0579fcace9f6cfa815a4df7f..c12de5a36bc614ff960c862601706593dc7e1b12 100644
(file)
--- a/
c/pthread_extra/test_pause.c
+++ b/
c/pthread_extra/test_pause.c
@@
-1,3
+1,5
@@
+#define PTHREAD_FREEWHEEL
+
#include <signal.h>
#include <pthread.h>
#include <pthread_extra.h>
#include <signal.h>
#include <pthread.h>
#include <pthread_extra.h>
@@
-6,6
+8,8
@@
#include <assert.h>
#include <unistd.h>
#include <assert.h>
#include <unistd.h>
+//#define printf(...) (0)
+
pthread_t main_thread;
void *thread_test(void *arg) {
pthread_t main_thread;
void *thread_test(void *arg) {
@@
-50,20
+54,35
@@
int main() {
while(1) {
pthread_pause(b);
pthread_unpause(a);
while(1) {
pthread_pause(b);
pthread_unpause(a);
+ pthread_pause_disable();
+ pthread_pause_disable();
+ pthread_pause_disable();
printf("SWITCH A:\n");
printf("SWITCH A:\n");
+ pthread_pause_enable();
+ pthread_pause_enable();
+ pthread_pause_enable();
pthread_sleep(2);
pthread_sleep(2);
+ pthread_pause_all();
printf("SWITCH B:\n");
printf("SWITCH B:\n");
+ pthread_unpause_all();
pthread_pause(a);
pthread_unpause(b);
pthread_sleep(2);
pthread_pause(a);
pthread_unpause(b);
pthread_sleep(2);
+ //pthread_pause_disable();
+ pthread_pause_all();
printf("SWITCH A+B:\n");
printf("SWITCH A+B:\n");
+ pthread_unpause_all();
+ //pthread_pause_enable();
pthread_unpause(a);
pthread_unpause(b);
pthread_sleep(1);
pthread_unpause(a);
pthread_unpause(b);
pthread_sleep(1);
+ //pthread_pause_disable();
+ pthread_pause_all();
printf("SWITCH MAIN ONLY:\n");
printf("SWITCH MAIN ONLY:\n");
+ //pthread_pause_enable();
pthread_pause_all();
//printf("\n");
pthread_sleep(1);
pthread_pause_all();
//printf("\n");
pthread_sleep(1);
This page took
0.882479 seconds
and
4
git commands to generate.