21 lines
		
	
	
		
			550 B
		
	
	
	
		
			PHP
		
	
	
	
	
	
		
		
			
		
	
	
			21 lines
		
	
	
		
			550 B
		
	
	
	
		
			PHP
		
	
	
	
	
	
| 
								 | 
							
								<?php
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								require_once __DIR__."/../vendor/autoload.php";
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								use NoccyLabs\Ipc\Key\FileKey;
							 | 
						||
| 
								 | 
							
								use NoccyLabs\Ipc\Sem\Semaphore;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								$key = new FileKey(__FILE__);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// Create semaphore with max count of 2
							 | 
						||
| 
								 | 
							
								$sem1 = new Semaphore($key, 2); 
							 | 
						||
| 
								 | 
							
								$sem2 = new Semaphore($key, 2); 
							 | 
						||
| 
								 | 
							
								$sem3 = new Semaphore($key, 2); 
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								printf("sem1 acquire: %d\n", $sem1->acquire());
							 | 
						||
| 
								 | 
							
								printf("sem2 acquire: %d\n", $sem2->acquire());
							 | 
						||
| 
								 | 
							
								printf("sem3 acquire: %d\n", $sem3->acquire());
							 | 
						||
| 
								 | 
							
								printf("sem2 release: %d\n", $sem2->release());
							 | 
						||
| 
								 | 
							
								printf("sem3 acquire: %d\n", $sem3->acquire());
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								$sem1->destroy();
							 |