| 741 | end |
| 742 | |
| 743 | def pull |
| 744 | client = @mutex.synchronize do |
| 745 | if @clients.empty? |
| 746 | create_client |
| 747 | else |
| 748 | @clients.pop |
| 749 | end |
| 750 | end |
| 751 | begin |
| 752 | yield(client) |
| 753 | ensure |
| 754 | release(client) |
| 755 | end |
| 756 | end |
| 757 | |
| 758 | def release(client) |
| 759 | @mutex.synchronize do |