Synchronization of threads C. Error: Expected ')' before ';'


 
Thread Tools Search this Thread
Top Forums Programming Synchronization of threads C. Error: Expected ')' before ';'
# 1  
Old 11-10-2011
Synchronization of threads C. Error: Expected ')' before ';'

Hi,

I'm trying to solve an assignement on school where we are supposed to synchronize two threads and write out their ID every other time.

I've written down the code for the two threadFunctions which is associated with two threads created in the main function.

What I'm trying to achieve here is that thread 1 will check if count is an even number. If so then it prints out and adds 1 to count and then signals thread 2 to take over.

But I get error when compiling:

In function threadFunction1: error: expected ')' before ';' token
In function threadFunction2: error: expected ')' before ';' token
one the lines where the while loop is written. Anybody know why?

Code:
#include <unistd.h>
#include <stdio.h>
#include <pthread.h>

#define COUNT_MAX 20;

pthread_mutex_t laas1;
pthread_mutex_t laas2;
pthread_cond_t cond_var;
int count = 0;

void *threadFunction1() {
pthread_mutex_lock(&laas1);
while(count<COUNT_MAX) {
if((count & 1) == 0) {
printf("Printout %d for thread 1:\t TID: %ld\n", count+1, pthread_self());
count++;
pthread_cond_signal(&cond_var);
}//if
}//while
pthread_mutex_unlock(&laas1);
return NULL;
}//threadFunction1

void *threadFunction2() {
while(count<COUNT_MAX) {
pthread_mutex_lock(&laas2);
pthread_cond_wait(&cond_var, &laas1);
printf("Printout %d for thread 2:\t TID: %ld\n", count, pthread_self());
count++;
pthread_mutex_unlock(&laas2);
}//while
return NULL;
}//threadFunction2

# 2  
Old 11-10-2011
Are you missing the PTHREAD_MUTEX_INITIALIZER ?

Code:
 
pthread_mutex_t laas1 = PTHREAD_MUTEX_INITIALIZER;
pthread_mutex_t laas2 = PTHREAD_MUTEX_INITIALIZER;

Linux Tutorial: POSIX Threads
# 3  
Old 11-10-2011
in the main function I've done it like this:

pthread_mutex_init(&laas1, NULL);
pthread_mutex_init(&laas2, NULL);
# 4  
Old 11-10-2011
This is your error:

Code:
 #define COUNT_MAX 20;

Remove the semicolon. It gets expanded to this:

Code:
while(count<20;)

# 5  
Old 11-10-2011
Quote:
Originally Posted by sjallamander
Hi,

I'm trying to solve an assignement on school where we are supposed to synchronize two threads and write out their ID every other time.

I've written down the code for the two threadFunctions which is associated with two threads created in the main function.

What I'm trying to achieve here is that thread 1 will check if count is an even number. If so then it prints out and adds 1 to count and then signals thread 2 to take over.

But I get error when compiling:

In function threadFunction1: error: expected ')' before ';' token
In function threadFunction2: error: expected ')' before ';' token
one the lines where the while loop is written. Anybody know why?

Code:
#include <unistd.h>
#include <stdio.h>
#include <pthread.h>

#define COUNT_MAX 20;

pthread_mutex_t laas1;
pthread_mutex_t laas2;
pthread_cond_t cond_var;
int count = 0;

void *threadFunction1() {
pthread_mutex_lock(&laas1);
while(count<COUNT_MAX) {
if((count & 1) == 0) {
printf("Printout %d for thread 1:\t TID: %ld\n", count+1, pthread_self());
count++;
pthread_cond_signal(&cond_var);
}//if
}//while
pthread_mutex_unlock(&laas1);
return NULL;
}//threadFunction1

void *threadFunction2() {
while(count<COUNT_MAX) {
pthread_mutex_lock(&laas2);
pthread_cond_wait(&cond_var, &laas1);
printf("Printout %d for thread 2:\t TID: %ld\n", count, pthread_self());
count++;
pthread_mutex_unlock(&laas2);
}//while
return NULL;
}//threadFunction2

your error is

#define COUNT_MAX 20; should be #define COUNT_MAX 20
# 6  
Old 11-14-2011
doh :S...thank youSmilie
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Help - binary operator expected error

Hello Unix forum. I'm encountering the following error "binary operator expected error" and I cannot seem to solve the issue. I have the following source files to process: CPA_LOOKUP_dat.lst PROFILE_TXN__dat.lst TRANSACTION_CODE_dat.lst PROFILE_TXN_OUT_OF_BALANCE_dat.lst ... (2 Replies)
Discussion started by: pchang
2 Replies

2. Shell Programming and Scripting

ERROR: `(' is not expected.

Hi All, I have written a shell script which works all right on bash shell, but when it comes to execute it using ksh on AIX it gives the following error::( bash$ /bin/ksh getShortInfo.sh getShortInfo.sh: syntax error at line 26 : `(' unexpected Could you please indicate what is... (4 Replies)
Discussion started by: Elvis
4 Replies

3. Programming

Please Help ! ----> error: expected ‘=’,

#include<stdio.h> int main{ char *fl; fl=(char*)malloc(150); strcat(fl,"/tmp/OV/"); printf("\nInside fl--->%s\n",fl); return 0; } I wrote a simple program as above. I got the error error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘{’ token Please help me out ! I am... (4 Replies)
Discussion started by: gameboy87
4 Replies

4. Shell Programming and Scripting

error : test: argument expected

Hello all, I am trying to figure out why i am getting an error while executing the script...altought it seems like its work...but still get the test arguement error...any help would be appericiate...this script basically connects to any oracle db ( just have to pass db name to it)... (4 Replies)
Discussion started by: abdul.irfan2
4 Replies

5. Shell Programming and Scripting

if stmt argument expected error

CT=0 while read LINE do # Check to see if the LINE is non-empty, and has a <td> tag in it. if then # Increase the TD counter by 1 CT=`echo "$CT+1"` fi done <test.htmthrows this error: ksh: test: argument expected test.htm <tr> <td>text</td... (4 Replies)
Discussion started by: dba_frog
4 Replies

6. Shell Programming and Scripting

fi not expected error

I'm trying this script and I keep getting a 'fi' not expected error: #!/bin/sh #TD=0 CT=0 cat P7748 |while read LINE do # Check to see if the LINE is non-empty, and has a <td> tag in it. if # Increase the TD counter by 1 CT=`echo "$CT+1" |bc` ... (2 Replies)
Discussion started by: dba_frog
2 Replies

7. Shell Programming and Scripting

Receiving error: ./ang.ksh[35]: 0403-057 Syntax error at line 116 : `done' is not expected.

Hi All I am quite new to Unix. Following is a shell script that i have written and getting the subject mentioned error. #!/bin/ksh #------------------------------------------------------------------------- # File: ang_stdnld.ksh # # Desc: UNIX shell script to extract Store information.... (3 Replies)
Discussion started by: amitsinha
3 Replies

8. Shell Programming and Scripting

ERROR: ./launch_full_backup.sh[18]: Syntax error at line 28 : `else' is not expected.

Help please! :confused: I have the following error with the following file and the emails are not arriving to the email, any idea please? ERROR: ./launch_full_backup.sh: Syntax error at line 28 : `else' is not expected. FECHA=`date +%d%m%y%H%M`... (2 Replies)
Discussion started by: villenan
2 Replies

9. Programming

c++ compile error: expected `)' before ‘strCommand’

I'm trying to learn c++ and make it compile a script to run some bash commands (cat, ls, open xterm) and can't get past the first part of the script I've borrowed to study: #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <sys/types.h> #include <sys/wait.h> int... (2 Replies)
Discussion started by: unclecameron
2 Replies

10. Shell Programming and Scripting

arguments expected error

ive implemented getopt for the command line but have this problem, #!/bin/sh text="" set -- getopt "t" etc .... #sets arguments while : do case "$1" in #gets arguments -t: shift; text="$1" ;; shift done shift if then echo "no text" else echo... (4 Replies)
Discussion started by: strike
4 Replies
Login or Register to Ask a Question