Re: output of client thread
luckybalaji@gmail.com wrote:
Hello,
I have searched in group. I didnt get answer for my doubts. So i'm
posting this. It is very basic doubt on thread. I wrote below program
to start understanding the thread.
I don't know what book you are reading, but I think you should have a
look at www.accu.org for other suggestions.
#include <iostream.h>
#include <fstream.h>
These are not standard. They should be
# include <iostream>
# include <fstream>
Standard names are in namespace std. To quickly make your program work,
add
using namespace std;
but do read about namespaces (especially
http://www.parashift.com/c++-faq-lite/coding-standards.html#faq-27.5).
#include <stdlib.h>
#include <errno.h>
These should be
# include <cstdlib>
# include <cerrno>
#include <pthread.h>
This does not exist in standard C++, the topic of this newsgroup. For
thread related questions, you'll be better served elsewhere. See
http://www.parashift.com/c++-faq-lite/how-to-post.html#faq-5.9 for
newsgroup suggestions.
extern int errno;
ofstream out;
Advice: globals are best avoided, *especially* with threads.
void* do_loop(void* data)
{
int i;
int me = *((int*)data);
Use C++ style casts:
int me = *reinterpret_cast<int*>(data);
for (i=0; i<10; i++)
out << " i " << i << " me " << me << endl;
pthread_exit(NULL);
return data;
}
void perror(char *str)
{
cout << str << " : " << errno << endl;
exit (1);
}
int main(int argc, char* argv[])
{
int thr_id;
pthread_t p_thread;
int a = 1; /* new thread */
int b = 2; /* main thread */
C++ is not C. See
http://www.parashift.com/c++-faq-lite/coding-standards.html#faq-27.7.
thr_id = pthread_create(&p_thread, NULL, do_loop, (void*)&a);
if ( thr_id != 0 )
perror("Thread create failed");
out.open("log.txt", ios::app);
out << "I'm from main thread " << thr_id << endl;
out.close();
return 0;
}
Jonathan