A brief discussion on simulating multi-threaded and multi-process crashes in Linux

A brief discussion on simulating multi-threaded and multi-process crashes in Linux

Conclusion:
In a multithreaded environment, if one of the threads crashes, other threads (the entire process) will crash.
If one of the processes in a multi-process environment crashes, it will have no impact on the remaining processes.

Multithreading

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <pthread.h>
#include <assert.h>

void *fun1(void *arg)
{
 printf("fun1 enter\n");
 while(1)
 {
  printf("%s\n", __FUNCTION__);
  usleep(1000 * 1000);
 }
 printf("fun1 exit\n");
 return ((void *)1);
}

void *fun2(void *arg)
{
 printf("fun1 enter\n");
 usleep(1000 * 3000);
 char * ptr = (char *)malloc(sizeof(char));
 printf("ptr1: 0x%x\n", ptr);
 ptr = NULL;
 printf("ptr2: 0x%x\n", ptr);
 free(ptr);
 memcpy(ptr, "123", 3);
 printf("ptr3: 0x%x\n", ptr);
 printf("fun2 exit\n");
 return ((void *)2);
}

int main(void)
{
 pthread_t tid1, tid2;
 int err;
 
 err = pthread_create(&tid1, NULL, fun1, NULL);
 assert(0 == err);
 err = pthread_create(&tid2, NULL, fun2, NULL);
 assert(0 == err);
 
 printf("main join ...\n");
// getchar();
 pthread_join(tid1, NULL);
 pthread_join(tid2, NULL);
 
 return 0;
}

Multi-process

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <pthread.h>
#include <assert.h>

void fun(void *arg)
{
 printf("fun1 enter\n");
 usleep(1000 * 3000);
 char * ptr = (char *)malloc(sizeof(char));
 printf("ptr1: 0x%x\n", ptr);
 ptr = NULL;
 printf("ptr2: 0x%x\n", ptr);
 free(ptr);
 memcpy(ptr, "123", 3);
 printf("ptr3: 0x%x\n", ptr);
 printf("fun2 exit\n");
 return ;
}

int main(int argc, char *argv[])
{
 assert(2 == argc);
 pid_t pid;
 int i;
 for(i=0; i<atoi(argv[1]); i++)
 {
  pid = fork();
  if(0 > pid)
  {
   printf("fork error");
   exit(1);
  }
  else if(0 == pid)
  {
   printf("child pid is %lu\n", (unsigned long)getpid());
   fun(NULL);
   exit(0);
  }
 }
 
 printf("parent pid is %lu\n", (unsigned long)getpid());
 while(-1 != wait(NULL)); //Wait for all subprocesses to finish printf("main return\n");
 getchar();
 
 return 0;
}

This is the end of this article about Linux simulation of multi-threaded crashes and multi-process crashes. For more relevant Linux simulation of multi-threaded crashes and multi-process crashes, please search for previous articles on 123WORDPRESS.COM or continue to browse the following related articles. I hope everyone will support 123WORDPRESS.COM in the future!

You may also be interested in:
  • Detailed explanation of C\C++ multi-process and multi-threaded programming examples under Linux
  • Implementation of Linux BASH multi-process parallel processing method
  • Sharing methods of implementing PHP multi-process under Linux
  • A brief analysis of a simple multi-threaded mutex lock example under Linux
  • Multithreaded programming in C language under Linux
  • Linux C multithreaded programming example code
  • Detailed explanation and simple examples of multithreading in Linux
  • Multithreaded programming under Linux (Part 3)
  • Linux multithreading uses mutex to synchronize threads
  • Linux multi-thread lock attribute setting method

<<:  The difference between distinct and group by in MySQL

>>:  Detailed explanation of the differences between var, let and const in JavaScript es6

Recommend

Configuring MySQL and Squel Pro on Mac

In response to the popularity of nodejs, we have ...

Instructions for nested use of MySQL ifnull

Nested use of MySQL ifnull I searched online to s...

Detailed tutorial on MySQL installation and configuration

Table of contents Installation-free version of My...

Screen command and usage in Linux

Screen Introduction Screen is a free software dev...

HTML Tutorial: Collection of commonly used HTML tags (6)

Related articles: Beginners learn some HTML tags ...

How to implement the builder pattern in Javascript

Overview The builder pattern is a relatively simp...

Solution to JS out-of-precision number problem

The most understandable explanation of the accura...

How to prevent Flash from covering HTML div elements

Today when I was writing a flash advertising code,...

Detailed explanation of the role of key in React

Table of contents Question: When the button is cl...