Ruby��Thread�AFiber�AKernel�Afork�ŕ��񏈗���v���Z�X�̐[�����F���G���W�j�A�^���S�҂̂��߂�Ruby 2.1����i11�j�i3/3 �y�[�W�j

» 2014�N12��15�� 18��00�� ���J
[���F���c�D�^�A�ďC�F�R�����i�C������ЃA�W���C���E�F�A]
�O�̃y�[�W�� 1|2|3 �@�@�@�@�@�@

�uKernel.#fork�v���\�b�h�ŕʂ̃v���Z�X�Ƃ��ď������s�킹��

�@Kernel���W���[���ɒ�`����Ă���ufork�v���\�b�h���g���ƁARuby�v���O�������������g�̕��g�ƂȂ�悤�ȃv���Z�X�𐶐����āA�ʂ̃v���Z�X�Ƃ��ď������s�킹�邱�Ƃ��ł��܂��B

fork�̃����b�g�^�f�����b�g

�@�`���Łu���񉻂ɂ�鍂������_����Thread�N���X���g�����Ƃ͓���v�Ə����܂������A�ufork�v���s���ƁAOS���x���ŕʂ̃v���Z�X����������܂��BOS�͊e�v���Z�X��CPU�R�A��U�蕪���Ă���̂ŁA�ufork�v�ɂ���Ď��Ԃ̂����鏈�������܂����U���ł���”\��������܂��B�܂��A�ufork�v���ꂽ�v���Z�X�͐e�v���Z�X�ƕʂ̐��E�œ����Ƃ��������b�g������܂��B

�@���������_�΂���ł͂���܂���B�p�ɂ�fork����ƁAfork�̂��߂̃I�[�o�[�w�b�h�������ł��Ȃ��Ȃ�܂����AOS�̃V�X�e���R�[���Ɉˑ�����@�\�Ȃ̂ŁAfork�V�X�e���R�[���������Ȃ��悤�ȃV�X�e���ł͗��p���邱�Ƃ͂ł��܂���BWindows��fork�V�X�e���R�[���������Ȃ��悤�ł��̂ŁAfork�̉��b�ɂ������邱�Ƃ͎c�O�Ȃ���ł��܂���B

�t�H�[�N����^���Ȃ��̈Ⴂ�𒲂ׂ�T���v���R�[�h

�@�ł́Aprocess03.rb��process04.rb�ɗ�������܂��傤�B�ǂ����1����i!�j�����Ɂu0.001�v�𑫂����ނ悤�ȏ������s���܂��B�Ⴂ�́Aprocess03.rb�̓v���Z�X���t�H�[�N���Ď��s���Ă���Aprocess04.rb�̓t�H�[�N�����ɒ������s���Ă���_�ł��B

f = 0.0
started_time = Time.now.to_i
 
3.times do
  fork do
    100000000.times { f += 0.001 }
    printf("%.3f\n", f)
  end
end
 
Process.waitall
puts "it takes #{Time.now.to_i - started_time} s"
process03.rb
f = 0.0
started_time = Time.now.to_i
 
3.times do
  100000000.times { f += 0.001 }
  printf("%.3f\n", f)
  f = 0
end
 
puts "it takes #{Time.now.to_i - started_time} s"
process04.rb
$ ruby process03.rb 
100000.000
100000.000
100000.000
it takes 12 s
process03.rb�̎��s��
$ ruby process04.rb 
100000.000
100000.000
100000.000
it takes 26 s
process04.rb�̎��s��

�R�[�h�̉��

�@process03.rb��process04.rb����؂͓����ł��B�܂��A1�s�ڂŕϐ�f��0.0�ŏ��������A2�s�ڂŌ��݂̎������擾���A������uto_i�v���\�b�h��UNIX�����ɕϊ����ĕϐ�started_time�Ɋi�[���܂��B

�@����4�s�ڂ���́u3.times�v�Ƃ��̃u���b�N�ŁAprocess03.rb�ł̓v���Z�X��3��t�H�[�N���Ă��܂��B�ufork�v���\�b�h�̃u���b�N�����Ƃ��āAf��1����u0.001�v�𑫂����ނ悤�ȏ�����^���Ă��܂��Bprocess04.rb�́A�P�ɒ����I��1����u0.001�v�𑫂����ނ悤�ȏ������s���Ă��܂��B

�@�Ō�̍s�ŁA�ǂ���̃X�N���v�g���A���݂�UNIX�����ƊJ�n����UNIX�����̍������A�������Ԃ��Z�o���Ă��܂��B

���s�̗l�q

�@�uhtop�v�Ƃ����c�[�����g���āAprocess03.rb��process04.rb�̎��s�̗l�q���ׂĂ݂܂��傤�B

process03.rb��htop�Ō����l�q
process04.rb��htop�Ō����l�q

�@�����̒ʂ�A�t�H�[�N�����ꍇ�́uruby process03.rb�v�Ƃ����v���Z�X��3�—����オ���Ă��邱�Ƃ�������܂��B�����Ă��̌���I��OS�ł́ACPU�ɕ��ׂ��|����悤�ȃv���Z�X�͂Ȃ�ׂ��ʁX��CPU�R�A�Ɋ��蓖�Ă�悤�ɂ���̂ŁAprocess03.rb�̕����������Ԃ��Z���ς�ł��܂��B

�@�܂��A�q�v���Z�X�̓t�H�[�N���ꂽ���_�ŁA���ꂼ�ꃁ������ԂȂǂ��قȂ鐢�E�œ������ƂɂȂ�܂��B�ł��̂ŁAprocess03.rb��6�s�ڂŕϐ�f�����������Ă��A���̎q�v���Z�X�̕ϐ�f�ɉe�����邱�Ƃ͂Ȃ��̂ŁA������Ƃ�����̎q�v���Z�X�ł��u100000.000�v�Ƃ����v�Z���ʂ������Ă��܂��B

�����Ruby�̍����p�u���^�v���O���~���O�v

�@����́ARuby�̃X���b�h�A�t�@�C�o�[�A�v���Z�X�Ƃ������d�g�݂��w�т܂����B���ɁARuby��IO�N���X��fork���\�b�h�Ƃ������d�g�݂́AOS���̂��̂Ɛ[���‚Ȃ����Ă��܂��B

�@�Ⴆ��fork���\�b�h�ł����AUNIX�nOS�̕W���I�ȁu�V�X�e���R�[���v�̒��ɁA�Y�o���u�t�H�[�N�v�Ƃ������̂�����܂��B����͂��܂�ڍׂɗ������炸�ɐ��������‚���ł����A�������������������܂���B���̕ӂ�̘b��[���������邽�߂ɂ�OS�̎d�g�݂�V�X�e���R�[�����w�ԕK�v������̂ŁA�X�L���A�b�v�̂��߂ɂ��A���Е׋����邱�Ƃ������߂��܂��B

�@�����Ruby�̍����p�A���^�v���O���~���O�ɂ‚��ĉ���������Ǝv���܂��B���^�v���O���~���O�ɂ‚��ė������邱�Ƃ́A���S�҂��������ݏo���āA�G�L�X�p�[�g�ɂȂ邽�ɂ͕K�{�ł��B���y���݂ɁI

�u���G���W�j�A�^���S�҂̂��߂�Ruby 2.1����v�o�b�N�i���o�[

���҃v���t�B�[��

���c �D�^�iRails�Z�p�ҔF��V���o�[�������쐬�ҁj

�C�^���A�A���[�}���܂�B���w���̂���HSP�ɏ��߂ĐG��A�v���O���~���O�̊y������m��B�I�[�v���\�[�X��n�b�J�[�J���`���[���D�ށBC#����Ruby�ɓ]�������Ƃ��ɁA���I�^�t������̏_��⃁�^�v���O���~���O�̖��͂Ɋ������ARuby�ƂƂ��Ƀv���O���}�[�Ƃ��Ă̐l������ތ��ӂ��ł߂�B

���݂͓ޗǐ�[�Ȋw�Z�p��w�@��w�Ŋw���Ƃ��ď������邩�����A������ЃA�W���C���E�F�A�Ńv���O���}�[�Ƃ��ď]���BRuby on Rails�ɂ��R���V���[�}�[������Web�T�[�r�X�̊J���Ȃǂɐs�͂��Ă���B

�D���ȃ��\�b�h�́Adefine_method�B

Twitter�F@Mozamimy�A�u���O�Fhttp://blog.quellencode.org/


�ďC�҃v���t�B�[��

�R�� ���i�iRuby�Ɩ��J����7�N�j

���Ɍ����܂�B1997�N����x���`���[�n�̃p�b�P�[�W�x���_�[��10�N�ԋΖ��B�����A�g�p���Ă��������Java�ƃT�[�o�[�T�C�hJavaScript�B

2007�N���IT�R���T����Ђɓ]�E���ARuby�Əo����ďՌ����󂯂�B��V�X�e����Ruby on Rails�Œu��������v���W�F�N�g�ɏ]���B����ȗ�Ruby��؂ŁARuby on Rails�̃v���O�C����gem���J���B

2013�N���A������ЃA�W���C���E�F�A�ɏ����B�A�W���C���Ȏ�@�ŁARuby on Rails���g���Ċ�ƌ����V�X�e�����\�z����Ɩ��ɏ]���B

Ruby�֐������B

Twitter�F@spring_kuma�AFacebook�F�R�� ���i


�O�̃y�[�W�� 1|2|3 �@�@�@�@�@�@

Copyright © ITmedia, Inc. All Rights Reserved.

'; this.insertTarget = document.querySelector('#cmsBody .subscription') || document.querySelector('#cmsBody .inner'); }; BodyAdIMSWithCCE.prototype = Object.create(BodyAdContent.prototype); BodyAdIMSWithCCE.prototype.activate = function () { refreshGam('InArtSpecialLink'); } // global reference window.itm = itm; //entry point BodyAdEventBase.polyfill(); const bodyAdManager = BodyAdManager.getInstance(); bodyAdManager.addEventListener(BodyAdManager.EVENTS.READY, function (ev) { bodyAdManager.loadAdvertise(); }); bodyAdManager.init(); })();
�X�|���T�[����̂��m�点PR

���ڂ̃e�[�}

Microsoft  WindowsőO2025
AI for GWjAO
[R[h^m[R[h Zg by IT - ITGWjArWlX̒SŊ􂷂gD
Cloud Native Central by IT - XP[uȔ\͂gD
�V�X�e���J���m�E�n�E �y�����i�r�zPR
���Ȃ��ɂ������߂̋L��PR

RSS�ɂ‚���

�A�C�e�B���f�B�AID�ɂ‚���

���[���}�K�W���o�^

��IT�̃��[���}�K�W���́A �������A���ׂĖ����ł��B���Ѓ��[���}�K�W�������w�ǂ��������B